OuteTTS 1.0 介绍与使用指南
1. 重要采样考虑
- 重复惩罚机制:OuteTTS 1.0 要求对最近的64个token应用重复惩罚,而不是对整个上下文窗口。对整个上下文窗口进行惩罚会导致输出质量下降。
- 推荐工具:llama.cpp 和 EXL2 提供了可靠的输出质量,而 Transformers 不支持窗口采样。为了解决这一问题,作者在 OuteTTS 库中为 Hugging Face Transformers 后端实现了窗口化重复惩罚。
- 效果提升:这种改进显著提高了语音合成和声音克隆的输出质量,使其与 llama.cpp 的结果相当。
2. 版本更新亮点
- 自动文本对齐:模型内部实现了单词级别的文本对齐,无需预处理。只需输入原始文本,模型会自动处理。
- 多语言支持:直接支持多种语言的文本,无需罗马化。支持的语言包括英语、阿拉伯语、中文、法语、德语等。
- 元数据增强:更新的提示系统在全局和单词级别添加了额外的元数据(时间、能量、频谱质心、音高),提升了语音流和合成质量。
- 音频编码器:集成了 IBM 研究的 DAC 音频编码器,利用两个码本进行高质量音频重建。
- 性能权衡:音频保真度的提升使生成速率从每秒75个token提高到150个token,优先考虑质量,尤其是多语言应用。
- 单次声音克隆:仅需约10秒的参考音频即可生成准确的声音表示。
- 精度提升:新编码器和额外训练元数据的加入使声音克隆更加自然和精确。
3. 多语言能力
- 支持的语言:
- 高训练数据语言:英语、阿拉伯语、中文、荷兰语、法语、德语、意大利语、日语、韩语、立陶宛语、俄语、西班牙语。
- 中等训练数据语言:葡萄牙语、白俄罗斯语、孟加拉语、格鲁吉亚语、匈牙利语、拉脱维亚语、波斯语/法语、波兰语、斯瓦希里语、泰米尔语、乌克兰语。
- 未训练语言:模型可以生成未训练语言的语音,但效果可能不理想。
- 直接数字输入:支持多语言数字输入,无需文本转换。模型会根据主导语言选择发音方式。
4. 安装与使用方法
- 安装:按照官方提供的安装说明进行操作。
- 基本使用方法:
import outetts # 初始化接口 interface = outetts.Interface( config=outetts.ModelConfig.auto_config( model=outetts.Models.VERSION_1_0_SIZE_1B, backend=outetts.Backend.LLAMACPP, quantization=outetts.LlamaCppQuantization.FP16 ) ) # 加载默认说话者配置 speaker = interface.load_default_speaker("EN-FEMALE-1-NEUTRAL") # 生成语音 output = interface.generate( config=outetts.GenerationConfig( text="Hello, how are you doing?", generation_type=outetts.GenerationType.CHUNKED, speaker=speaker, sampler_config=outetts.SamplerConfig(temperature=0.4) ) ) # 保存到文件 output.save("output.wav")
5. 模型规格与训练参数
-
训练数据:基于约60,000小时的音频数据进行训练。
-
上下文窗口:支持最大8,192个token的上下文窗口。
-
优化器:使用 AdamW 优化器。
-
学习率:
-
最大学习率:3e-4
-
最小学习率:3e-5
-
-
批量大小:1百万个token。
-
预训练与微调:
-
基于 Llama 3.2-1B 模型进行预训练和微调。
-
许可证:初始 Llama 3.2 组件遵循社区许可协议,持续预训练和微调遵循 CC-BY-NC-SA-4.0。
-