本文汇总了您在使用语音合成服务时的常见问题。
语音合成类常见问题主要分为以下几类:
-
功能类
-
性能类
功能类
为什么TTS语音合成的语音和WAV文件显示的时间长度不一致?例如语音文件显示长度是7秒钟,但实际语音只有不到5秒?
TTS是流式合成机制,也就是边合成边返回数据,因此保存下来的WAV文件头是一个预估的值,有一定的误差。如果对于时长要求较为严格,您可以设置format为pcm,在获取的完整的一句合成结果文件中自行添加WAV头信息,这样就会得到更为精确的时长。具体请参见接口说明。
语音合成时间戳功能是什么?
语音实时合成服务在输出音频流的同时,可输出每个汉字/英文单词在音频中的时间位置,即时间戳,时间戳功能又叫字级别音素边界接口,可用于字幕生成、虚拟人口型驱动等场景。返回的时间戳信息通过 begin_index(字在原文中的起始索引)和 end_index(字在原文中的结束索引)字段标识每个字的文本位置,通过时间字段标识对应的音频时间(毫秒)。具体请参见语音合成时间戳功能介绍。
语音合成时,能否控制一串数字是按数字来整体播报还是按字符来单独播报,有参数可以控制吗?
您可以尝试使用SSML功能。SSML是一种基于XML的语音合成标记语言,SSML不仅可以控制语音合成能读什么,更可以控制语音合成怎么读,包括控制断句分词方式、发音、速度、停顿、声调、音量等特征,甚至加入背景音乐。具体请参见SSML标记语言介绍。
对于多音字,TTS语音合成服务发音的策略是怎么样的?
当遇到不是词组的多音字,TTS语音合成转换的时候会根据上下文进行多音字的预测,并给出一个发音。
长文本语音合成有调用限制吗?
长文本语音合成功能提供了将超长文本(如千字或者万字)合成为语音二进制数据的功能。支持输出PCM、WAV和MP3编码格式数据;支持设置语速、语调和音量;支持设置男声、女声。您可以通过实时和异步方式获取合成结果。
长文本语音合成服务和语音合成服务的差异在于:语音合成服务只能支持300字符以下的文本,而长文本语音合成是为了满足更多用户对千字或者万字文本合成需求,最多支持10万字的一次性快速合成调用。具体请参见接口说明。
此外,请注意以下两点:
-
调用方式:长文本语音合成目前仅支持通过 API 调用,暂无 Web 页面操作入口。
-
音频售卖权益:长文本语音合成商用版服务合成的音频,在数据合法合规的前提下支持售卖。
百炼控制台/网页版语音合成结果如何下载或保存音频文件?
百炼控制台及网页版仅支持在线试听,不提供直接下载或保存按钮。如需获取音频文件,请通过调用 API 或使用 SDK 的方式,将生成的语音数据写入本地文件。
如需临时获取音频,可在控制台模型体验页面,通过浏览器开发者工具(F12)在网络请求中找到音频流链接,手动保存。
语音合成是否支持多角色对话、方言动态切换及哪些语种?
语音合成服务在多角色对话、方言和语种方面的支持情况如下:
-
多角色对话:不支持在单次合成中直接生成包含多角色的音频。如需多角色效果,需分别使用不同音色对各角色文本进行合成,再自行拼接音频。
-
方言支持:SDK 支持在调用时指定对应方言发音人,以实现方言发音。产品仅提供底层合成能力,不包含对话逻辑生成功能。
-
语种支持:目前支持泰语、越南语、印尼语、菲律宾语,暂不支持马来西亚语。CosyVoice 系统音色葡萄牙语支持情况请以官方文档最新发音人列表为准。
-
音色查询:暂无 API 接口可查询所有可用音色列表,请查阅官方文档或在产品详情页试听。
语音合成服务的商用授权、售卖权限及硬件设备使用限制是什么?
语音合成服务在商用授权和使用场景方面的说明如下:
-
商用与售卖:长文本语音合成商用版服务合成的语音,在数据合法合规的前提下可以进行售卖。
-
硬件使用:允许将合成的语音放入硬件设备中使用,不涉及机械复制权限制。
-
免费额度:语音合成接口开通后,提供的音色均可免费使用;离线语音合成也提供免费额度,无需购买即可试听。
微信小程序、抖音小程序及 UniApp 是否提供语音合成 SDK?
目前各小程序及跨端框架的支持情况如下:
-
微信小程序:SDK 仅支持短文本一次性合成,不支持流式输出。CosyVoice 暂未提供微信小程序专用 SDK;如需流式播放,请参考 WebSocket 协议文档自行集成。
-
抖音小程序/UniApp:暂无专用 SDK,建议通过 RESTful API 方式接入语音合成服务。
-
C# 离线开发:离线 SDK 仅支持 iOS 和 Android 平台,不支持 C#。如需在 C# 环境中使用语音合成,请调用在线服务 API。
长文本语音合成是否有 Web 页面操作入口?轮询时应等待多久?
长文本语音合成的操作方式和轮询建议如下:
-
操作方式:长文本语音合成目前仅支持通过 API 接口调用,暂无 Web 页面操作入口。
-
轮询建议:约 300 字的文本通常在数十秒内完成合成。建议首次轮询等待 30 秒,之后每隔 10 秒查询一次合成结果。
-
延时说明:CosyVoice 长文本合成的延时略高于普通合成,系统已针对此做优化处理。
声音复刻、自定义音色及特定模型的使用限制有哪些?
声音复刻和自定义音色相关限制说明如下:
-
声音克隆模型:推荐使用
qwen3-tts-vc-系列模型进行声音克隆。 -
Qwen-Voice-Design 音色:复刻生成的音色无法下载为音频文件,后续合成需使用系统生成的音色 ID 进行调用。
-
MRCP 协议限制:MRCP 协议仅支持短文本语音合成接口说明中的音色,不支持 Qwen-TTS 生成的自定义音色。
-
儿童音色:支持接口调用,在代码中直接指定音色名称即可,无需单独创建项目。
-
离线粤语音色:当前不支持购买粤语音色包。
如何在百炼平台体验声音合成功能?
如需体验百炼平台的声音合成功能,请访问百炼控制台声音合成体验页面(DemoHouse)。
性能类
为什么TTS语音合成服务的调用有字数限制?
TTS语音合成服务调用有字数限制,是为了避免服务端资源浪费,一次性合成太多字最终未必会使用上。如果通过用API或SDK调用,可以分段调用后拼接;如果是MRCP协议调用,多用于客服或者呼叫中心场景,太多字数的TTS语音合成播放效果会持续播放较长时间,不符合人机交互逻辑,通常会被打断或提前结束。如果是超长文本,如果是千字或万字的新闻播放,可使用长文本语音合成接口,支持10万字的一次性快速合成调用。具体请参见接口说明。
TTS服务返回错误码144005怎么办?
错误码144005(TTS_CLOUD_EXCEED_CONCURRENCY)表示当前请求量已超过并发限制。免费版语音合成服务默认提供2路并发,当同时进行的合成请求超过此限制时,系统返回该错误码,任务进入排队,导致响应延迟。
您可以在智能语音交互控制台的监控统计页面查看并发使用率。该页面提供调用量统计和并发统计两个维度,支持按服务、项目、区域和时间范围筛选。当并发使用率持续较高时,请提前扩容。
如需提升并发配额,请在控制台总览页面点击语音合成服务旁的"升级为商用版",升级后可获得更高的并发限制。
为什么语音合成速度慢,延迟非常大?
随着语音合成效果的不断提升,算法的复杂度也越来越高,对用户而言,可能会遇到合成耗时变长的可能,在计算量较大的高级音色上相对更明显。因此我们建议使用流式合成机制,也就是边接收服务端返回的合成数据,边保存或者播放,可以显著改善语音合成延迟问题。
首先确认统计的是否是文本全部合成的耗时,一般只需要关注首包延迟,即客户端发送完合成请求后到第一次收到服务端返回的二进制流的时间差,即为首包延迟。
使用SDK调用TTS服务时,通过流式回调接口接收音频数据即可实现流式合成。客户端收到首个音频分片后立即开始播放,无需等待全文合成完成。具体接口和参数说明请参见接口说明。
对于延迟敏感场景,可使用CosyVoice大模型流式语音合成服务,该服务支持边合成边返回,进一步降低首包延迟。
首包延迟优化要点:选择算法复杂度较低的普通音色可降低首包延迟;高级音色合成效果更好但耗时更长;当并发量达到上限时,系统返回错误码144005,此时请参见并发超限排查方案。
语音合成的读音正确率怎么样?
语音合成(TTS)是概率模型,目前业界能做到的读音正确率在96%~98%之间,阿里云智能语音交互产品在通用场景下测试准确率在97%左右。这意味着不是所有读音错误都能被修复掉,建议您可以通过换字或使用SSML功能。
语音合成的发音读错怎么办?多音字如何控制发音?
您可以通过以下几种方式处理:
-
可以尝试将多音字替换成同音的其他汉字快速解决发音问题。
-
您可以尝试使用SSML功能。SSML是一种基于XML的语音合成标记语言,SSML不仅可以控制语音合成能读什么,更可以控制语音合成怎么读,包括控制断句分词方式、发音、速度、停顿、声调、音量等特征,甚至加入背景音乐。具体请参见SSML标记语言介绍。
为什么不同声色的语音合成音产生的延迟不一样?
语音合成的实时率与模型算法的复杂度有关。最快的模型1秒内可合成33秒音频,最慢的模型1秒内可合成0.7秒的音频。普通音色和精品音色的时延不同,算法效果越好的音色相对来说耗时更长。
语音合成的时候可以识别哪些标点符号?
特殊符号也会读出相应的发音。例如:α、β、γ、ρ、sin、cos、tan;“百分号”会读成百分之几,“冒号”和“括号”会做停顿处理,“书名号”和“破折号”目前不支持识别。 对于特殊符号的处理,TTS语音合成服务和正常人说话效果是相同的,该停顿的时候会停顿。
语音合成支持部分文本调速吗?
支持,您可以尝试使用SSML功能。具体请参见SSML标记语言介绍。
语音合成时间戳的计算规则是什么?分段合成后如何拼接?
时间戳计算规则及拼接方案说明如下:
-
SSML 停顿时间戳:使用
<break>标签控制停顿时,返回的字幕时间戳不包含停顿时间。时间戳中的begin_index和end_index索引基于去除 SSML 标签后的纯文本位置计算。 -
拼接方案建议:不推荐将文本拆分为多段分别合成后再拼接并修正时间戳,该方式容易引入时间误差。官方推荐使用 SSML 将全文统一合成,以保证音频连贯性和时间戳的准确性。
流式语音合成(CosyVoice/WebSocket)连接报错或交互流程异常如何处理?
以下列出常见异常场景及对应处理方法:
-
WebSocket 连接被拒绝(readyState=3):确认服务地址是否正确——CosyVoice 流式合成仅支持北京节点(
wss://nls-gateway-cn-beijing.aliyuncs.com/ws/v1)。同时确保在收到SynthesisStarted事件后 10 秒内发送文本流,否则因空闲超时触发错误码 40000004 导致连接断开。 -
报错 MESSAGE_INVALID / BALANCING:原因是未等待
SynthesisStarted事件就发送了RunSynthesis指令。正确的交互流程为:StartSynthesis→ 等待SynthesisStarted→RunSynthesis。 -
报错 STATE_FAIL:流式合成不支持试用版,需开通商用版后方可使用。
-
协议混淆:CosyVoice 流式合成与实时语音识别的 WSS 地址可能相同,但两者的协议参数完全不同,不可套用对方的参数配置。
-
异常数据(fin=1, opcode=8):此为连接异常关闭标志,需提供完整的返回日志及 Demo 参数截图,联系技术支持协助排查。
离线语音合成 SDK 集成报错或环境依赖问题如何解决?
以下列出常见问题及对应处理方法:
-
系统依赖说明:离线语音合成依赖 SDK 自身的合成能力,不依赖手机系统内置的 TTS 引擎,无需担心系统 TTS 环境的兼容性。
-
报错
tdata.bin stat is invalid (ret:-1)/ 错误码 140900:原因是发音人资源文件不存在或应用无读写权限。请检查以下路径的权限及 zip 解压情况:/data/user/0/com.aliyun.nls/cache/nls_tts/tts/voices。建议参照官方 Demo 的配置方式进行初始化。 -
SDK 区别:离线语音合成与离线语音转文字使用不同的 SDK,不可混用。目前不支持完全离线的语音转文字功能。
-
设备数量限制:设备接入无最低数量限制,但单个 DeviceID 每日注册上限为 5 次(系统级限制,不可调整)。
语音合成返回数据异常、无声音或效果不佳如何排查?
以下列出常见异常现象及对应排查方向:
-
有响应但无声音:服务端返回的是二进制音频数据,客户端需主动将数据写入播放器或保存为本地文件,SDK 本身不含自动播放功能。
-
返回固定 32 字节数据:通常是因为使用了该发音人不支持的语种,此时服务不会报错,但合成效果无法保证。请检查发音人与输入文本的语种是否匹配。
-
控制台监控查不到数据/无法获取 TaskID:控制台不支持直接查看 TaskID,请从接口返回结果或应用日志中获取。调用量统计可在控制台统计页面查看。
-
控制台监控切换能力不可选:需先取消当前已选能力,再重新选择目标能力。
-
音色优先级:SDK 代码中配置的发音人优先级高于控制台中的配置,二者存在冲突时以代码配置为准。
-
新加坡节点报错 418:表示使用了该节点不支持的音色(如
cally_ecmix),请更换为该节点支持的音色(如艾夏、小云等)。 -
音频内容与文本不符:如使用声音复刻功能,建议重新录制无杂音且结尾完整的音频,以提升复刻效果。