
这款语音合成引擎提供了从基础文本转语音到高阶声音克隆的完整能力。通过标准化的接口和丰富的控制标记,开发者可以像编写剧本一样精准把控发音的每一个细节。以下是本地部署后的完整操作与调优指南,帮助你快速将这项技术融入工作流。
启动整合包后,核心服务默认运行在本地。通过浏览器访问 http://localhost:8000 可以进入图形化界面进行调试。
对于开发与自动化场景,引擎提供兼容 OpenAI TTS 规范的 API 接口,这使得现有的工作流和第三方脚本可以无缝对接。
接口地址为 POST http://localhost:8000/v1/audio/speech。最基础的调用仅需提供 input 字段。
```python import requests
response = requests.post( "http://localhost:8000/v1/audio/speech", json={"input": "了解语音合成技术的基础逻辑。"}, timeout=300 )
with open("output.wav", "wb") as f: f.write(response.content)
```
在基础调用之外,引擎开放了多个配置项以应对复杂的生成需求。合理的参数组合是获取高质量音频的前提。
wav、mp3、flac 和 pcm,默认为 wav0.7500多数场景下保持默认参数即可获得稳定的输出。当面临特定需求时,理解并调整以下三个核心参数能够显著改善结果。
该参数决定了声音的稳定度与表现力。数值越低,模型越倾向于选择概率最高的发音路径;数值越高,声音的情感变化和起伏越丰富,但也增加了发音失常的风险。
该值决定了单次生成的音频时间上限。作为估算标准,每 25 个 Token 大约对应 1 秒钟的音频时长。
500 约支持 20 秒,适合单句或短对话800 约支持 32 秒,适合较长段落2048 约支持 80 秒,是处理长篇内容的理想设定如果发现输出音频在结尾处被生硬截断,适当调高此参数即可解决。设定较高的上限不会浪费计算资源,模型在完成文本朗读后会自动停止。
这两项参数在底层控制候选词的选择范围。默认设置(top_k=50, top_p=0.95)已经过充分优化。如果追求极致的稳定性,可以尝试收紧采样范围,例如将其调整为 top_k=30 与 top_p=0.8。
引擎支持在文本中插入特殊标记,以此控制发音的情感、音效和韵律。这改变了传统 TTS 扁平的文本输入方式,使其更接近于为演员撰写剧本指导。
在句首添加 标记,可赋予文本特定的情绪色彩。
<|emotion:情感名|>emotion:elation — 狂喜,适合播报激动人心的消息emotion:determination — 坚定,用于表达承诺或决心emotion:pride — 自豪,适合分享成就emotion:affection — 温情,用于柔和的对话emotion:contemplation — 沉思,适合内心独白或哲理探讨emotion:surprise — 惊讶,表现对意外事件的反应emotion:anger — 愤怒,用于严厉的质问或争吵场景emotion:sadness — 悲伤,处理伤感或离别的叙事```text <|emotion:enthusiasm|>各位观众好,今天介绍的这款产品,值得深入了解。 <|emotion:sadness|>那是我们最后一次见面,那个平常的下午成了告别。
```
通过 <|sfx:音效名|> 可以在指定位置插入自然的环境音或人体发声。在标记后紧跟相应的拟声词,能让过渡更加平滑。
支持的音效包括:laughter (笑声)、cough (咳嗽)、crying (哭泣)、sigh (叹气)、humming (哼唱)、sneeze (打喷嚏)、screaming (尖叫)、burping (打嗝) 和 sniff (吸鼻)。
```text 这确实有些出乎意料。<|sfx:laughter|>Haha,令人印象深刻。 今天工作量超出预期。<|sfx:sigh|>唉,先休息一下。
```
这类标记用于控制发音的基本物理属性,包括音量、语速、音调和停顿。
声音风格:
style:whispering — 耳语,适合构建悬疑或私密氛围style:shouting — 呼喊,适用于远距离召唤或体育解说style:singing — 演唱,用于简单的旋律哼唱语速控制:
prosody:speed_very_slow — 极慢速,约 0.65 倍prosody:speed_slow — 慢速,约 0.85 倍prosody:speed_fast — 快速,约 1.2 倍表现力与停顿:
prosody:expressive_low — 克制平淡,适合严肃播报prosody:expressive_high — 夸张饱满,适合广告或故事讲述prosody:pause / prosody:long_pause — 插入半秒或一秒的精确停顿建议将标记组合使用。例如
<|prosody:speed_fast|><|emotion:enthusiasm|>可以产生语速较快且充满热情的播报效果。组合时需注意逻辑自洽,避免将冲突的指令放在一起。
提供一段基准音频,引擎即可提取音色特征,并用该音色合成任意文本。
声音克隆通过将参考音频进行 Base64 编码并传入 references 数组来实现。
```python import base64 import requests
with open("reference_audio.wav", "rb") as f: ref_b64 = base64.b64encode(f.read()).decode("utf-8")
payload = { "input": "了解语音合成技术的基础逻辑。", "references": [ { "audio": ref_b64, "text": "参考音频中的原始文本内容" } ], "temperature": 0.3, "seed": 42 }
requests.post("http://localhost:8000/v1/audio/speech", json=payload)
```
克隆质量直接取决于参考音频的标准。遵循以下原则能大幅降低失败率:
务必在请求中填写
text字段,提供参考音频的准确转录。这一步骤为模型提供了文本与声学特征对齐的关键参照,是提升相似度的核心技巧。
跨语言克隆(例如使用中文音色合成英文文本)属于实验性功能。执行此类操作时,必须将 temperature 降低至 0.3,并进行多次随机种子测试以筛选最优结果。
引擎原生支持在单一文本中分配不同音色。通过使用 [SPEAKER0]、[SPEAKER1] 标签标记段落,模型会自动交替分配声音角色。处理此类长文本时,建议同步提高 max_new_tokens 的值。
对于超过一分钟的文本,单次生成容易超出上下文窗口。可以使用工具包内置的 generation.py 脚本。它能够根据标点符号和词组自动将长文章切片,逐段生成后再进行无缝拼接。
```bash python generation.py \ --transcript long_article.txt \ --ref_audio en_man \ --chunk_method word \ --temperature 0.3 \ --out_path final_output.wav
```
输入文本的整洁度决定了最终的合成质量。模型在处理较长且结构完整的句子时表现更佳。请确保每句话末尾都有明确的标点符号,这能帮助模型正确判断停顿位置。同时,建议将阿拉伯数字转换为文字(如将 "15%" 改为 "百分之十五"),并尽量去除括号及括号内的补充说明。
当生成结果不符合预期时,请对照以下清单定位问题:
temperature 下调至 0.5max_new_tokens 参数seed 参数。相同输入与种子将产出绝对一致的音频引擎底层由约 40 亿参数的模型驱动。运行时需占用 9 至 10 GB 显存。默认以 24,000 Hz 采样率输出 16-bit 单声道音频。目前稳定支持中文、英文以及两者的自然混合输入。
```
暂无评论,快来抢沙发吧~
评论