模型简介
模型特点
模型能力
使用案例
🚀 OuteTTS-1.0-0.6B GGUF模型
OuteTTS-1.0-0.6B GGUF模型是文本转语音领域的优秀成果,能支持多种语言,在语音合成和语音克隆方面表现出色,为用户带来强大、准确且友好的使用体验。
🚀 快速开始
安装
基础设置
from outetts import Interface, ModelConfig, GenerationConfig, Backend, InterfaceVersion, Models, GenerationType
# 初始化接口
interface = Interface(
ModelConfig.auto_config(
model=Models.VERSION_1_0_SIZE_0_6B,
backend=Backend.HF,
)
)
# 加载默认的**英语**说话人配置文件
speaker = interface.load_default_speaker("EN-FEMALE-1-NEUTRAL")
# 或者创建你自己的说话人(仅使用一次)
# speaker = interface.create_speaker("path/to/audio.wav")
# interface.save_speaker(speaker, "speaker.json")
# 从保存的文件中加载你的说话人
# speaker = interface.load_speaker("speaker.json")
# 生成语音并保存到文件
output = interface.generate(
GenerationConfig(
text="Hello, how are you doing?",
speaker=speaker,
)
)
output.save("output.wav")
批量设置
from outetts import Interface, ModelConfig, GenerationConfig, Backend, GenerationType
if __name__ == "__main__":
# 使用支持批量处理的后端初始化接口
interface = Interface(
ModelConfig(
model_path="OuteAI/OuteTTS-1.0-0.6B-FP8",
tokenizer_path="OuteAI/OuteTTS-1.0-0.6B",
backend=Backend.VLLM
# 对于EXL2,使用backend=Backend.EXL2ASYNC + exl2_cache_seq_multiply={应与GenerationConfig中的max_batch_size相同}
# 对于LLAMACPP_ASYNC_SERVER,使用backend=Backend.LLAMACPP_ASYNC_SERVER并在GenerationConfig中提供server_host
)
)
# 加载你的说话人配置文件
speaker = interface.load_default_speaker("EN-FEMALE-1-NEUTRAL") # 或者加载/创建自定义说话人
# 使用批量类型生成语音
# 注意:对于EXL2ASYNC、VLLM、LLAMACPP_ASYNC_SERVER,会自动选择批量处理
output = interface.generate(
GenerationConfig(
text="This is a longer text that will be automatically split into chunks and processed in batches.",
speaker=speaker,
generation_type=GenerationType.BATCH,
max_batch_size=32, # 根据你的GPU内存和服务器容量进行调整
dac_decoding_chunk=2048, # 调整DAC解码的块大小
# 如果使用LLAMACPP_ASYNC_SERVER,添加:
# server_host="http://localhost:8000" # 替换为你的服务器地址
)
)
# 保存到文件
output.save("output_batch.wav")
更多配置选项
如需高级设置和自定义,请访问官方仓库:
✨ 主要特性
- 多语言支持:支持英语、中文、荷兰语、法语、格鲁吉亚语、德语、匈牙利语、意大利语、日语、韩语、拉脱维亚语、波兰语、俄语、西班牙语等多种语言。
- 语音合成与克隆:在语音合成和语音克隆方面有显著改进,能带来更强大、准确且用户友好的体验。
- 批量推理:OuteTTS Python包v0.4.2版本新增了批量推理生成功能。
📦 安装指南
💻 使用示例
基础用法
from outetts import Interface, ModelConfig, GenerationConfig, Backend, InterfaceVersion, Models, GenerationType
# 初始化接口
interface = Interface(
ModelConfig.auto_config(
model=Models.VERSION_1_0_SIZE_0_6B,
backend=Backend.HF,
)
)
# 加载默认的**英语**说话人配置文件
speaker = interface.load_default_speaker("EN-FEMALE-1-NEUTRAL")
# 或者创建你自己的说话人(仅使用一次)
# speaker = interface.create_speaker("path/to/audio.wav")
# interface.save_speaker(speaker, "speaker.json")
# 从保存的文件中加载你的说话人
# speaker = interface.load_speaker("speaker.json")
# 生成语音并保存到文件
output = interface.generate(
GenerationConfig(
text="Hello, how are you doing?",
speaker=speaker,
)
)
output.save("output.wav")
高级用法
from outetts import Interface, ModelConfig, GenerationConfig, Backend, GenerationType
if __name__ == "__main__":
# 使用支持批量处理的后端初始化接口
interface = Interface(
ModelConfig(
model_path="OuteAI/OuteTTS-1.0-0.6B-FP8",
tokenizer_path="OuteAI/OuteTTS-1.0-0.6B",
backend=Backend.VLLM
# 对于EXL2,使用backend=Backend.EXL2ASYNC + exl2_cache_seq_multiply={应与GenerationConfig中的max_batch_size相同}
# 对于LLAMACPP_ASYNC_SERVER,使用backend=Backend.LLAMACPP_ASYNC_SERVER并在GenerationConfig中提供server_host
)
)
# 加载你的说话人配置文件
speaker = interface.load_default_speaker("EN-FEMALE-1-NEUTRAL") # 或者加载/创建自定义说话人
# 使用批量类型生成语音
# 注意:对于EXL2ASYNC、VLLM、LLAMACPP_ASYNC_SERVER,会自动选择批量处理
output = interface.generate(
GenerationConfig(
text="This is a longer text that will be automatically split into chunks and processed in batches.",
speaker=speaker,
generation_type=GenerationType.BATCH,
max_batch_size=32, # 根据你的GPU内存和服务器容量进行调整
dac_decoding_chunk=2048, # 调整DAC解码的块大小
# 如果使用LLAMACPP_ASYNC_SERVER,添加:
# server_host="http://localhost:8000" # 替换为你的服务器地址
)
)
# 保存到文件
output.save("output_batch.wav")
📚 详细文档
模型生成细节
此模型使用 llama.cpp 在提交版本 92ecdcc0
时生成。
选择合适的模型格式
选择正确的模型格式取决于你的硬件能力和内存限制。
BF16(脑浮点16)——若有BF16加速功能则使用
- 一种16位浮点格式,旨在实现更快的计算,同时保持良好的精度。
- 提供与FP32 相似的动态范围,但内存使用更低。
- 若你的硬件支持BF16加速(请检查设备规格),则推荐使用。
- 与FP32相比,适用于高性能推理且内存占用减少的场景。
适用情况:
- 你的硬件具备原生BF16支持(例如,较新的GPU、TPU)。
- 你希望在节省内存的同时获得更高的精度。
- 你计划将模型重新量化为其他格式。
避免情况:
- 你的硬件不支持BF16(可能会回退到FP32并导致运行速度变慢)。
- 你需要与缺乏BF16优化的旧设备兼容。
F16(浮点16)——比BF16更广泛支持
- 一种16位浮点格式,具有高精度,但取值范围比BF16小。
- 适用于大多数支持FP16加速的设备(包括许多GPU和一些CPU)。
- 数值精度略低于BF16,但通常足以用于推理。
适用情况:
- 你的硬件支持FP16但不支持BF16。
- 你需要在速度、内存使用和准确性之间取得平衡。
- 你在GPU或其他针对FP16计算进行优化的设备上运行。
避免情况:
- 你的设备缺乏原生FP16支持(可能会比预期运行得慢)。
- 你有内存限制。
量化模型(Q4_K、Q6_K、Q8等)——用于CPU和低显存推理
量化可在尽可能保持准确性的同时减小模型大小和内存使用。
- 低比特模型(Q4_K) ——最适合最小化内存使用,但精度可能较低。
- 高比特模型(Q6_K、Q8_0) ——准确性更高,但需要更多内存。
适用情况:
- 你在CPU上运行推理,需要优化的模型。
- 你的设备显存较低,无法加载全精度模型。
- 你希望在保持合理准确性的同时减少内存占用。
避免情况:
- 你需要最高的准确性(全精度模型更适合这种情况)。
- 你的硬件有足够的显存来支持更高精度的格式(BF16/F16)。
极低比特量化(IQ3_XS、IQ3_S、IQ3_M、Q4_K、Q4_0)
这些模型针对极致内存效率进行了优化,非常适合低功耗设备或内存是关键限制因素的大规模部署场景。
-
IQ3_XS:超低比特量化(3位),具有极致的内存效率。
- 适用场景:最适合超低内存设备,即使Q4_K也太大的情况。
- 权衡:与高比特量化相比,准确性较低。
-
IQ3_S:小块大小,以实现最大内存效率。
- 适用场景:最适合低内存设备,当IQ3_XS过于激进时使用。
-
IQ3_M:中等块大小,比IQ3_S具有更好的准确性。
- 适用场景:适用于低内存设备,当IQ3_S限制过多时使用。
-
Q4_K:4位量化,具有逐块优化以提高准确性。
- 适用场景:最适合低内存设备,当Q6_K太大时使用。
-
Q4_0:纯4位量化,针对ARM设备进行了优化。
- 适用场景:最适合基于ARM的设备或低内存环境。
模型格式选择总结表
模型格式 | 精度 | 内存使用 | 设备要求 | 最佳用例 |
---|---|---|---|---|
BF16 | 最高 | 高 | 支持BF16的GPU/CPU | 减少内存的高速推理 |
F16 | 高 | 高 | 支持FP16的设备 | 当BF16不可用时的GPU推理 |
Q4_K | 中低 | 低 | CPU或低显存设备 | 内存受限环境的最佳选择 |
Q6_K | 中 | 中等 | 内存更多的CPU | 在量化的同时保证较好的准确性 |
Q8_0 | 高 | 中等 | 有足够显存的CPU或GPU | 量化模型中准确性最佳 |
IQ3_XS | 极低 | 极低 | 超低内存设备 | 极致的内存效率和低准确性 |
Q4_0 | 低 | 低 | ARM或低内存设备 | llama.cpp可针对ARM设备进行优化 |
包含的文件及详情
OuteTTS-1.0-0.6B-bf16.gguf
- 模型权重以BF16格式保存。
- 如果你想将模型重新量化为其他格式,请使用此文件。
- 若你的设备支持BF16加速,则最佳。
OuteTTS-1.0-0.6B-f16.gguf
- 模型权重以F16格式存储。
- 若你的设备支持FP16,尤其是在BF16不可用时使用。
OuteTTS-1.0-0.6B-bf16-q8_0.gguf
- 输出和嵌入保持为BF16。
- 所有其他层量化为Q8_0。
- 若你的设备支持BF16且你想要量化版本,则使用此文件。
OuteTTS-1.0-0.6B-f16-q8_0.gguf
- 输出和嵌入保持为F16。
- 所有其他层量化为Q8_0。
OuteTTS-1.0-0.6B-q4_k.gguf
- 输出和嵌入量化为Q8_0。
- 所有其他层量化为Q4_K。
- 适用于内存有限的CPU推理。
OuteTTS-1.0-0.6B-q4_k_s.gguf
- 最小的Q4_K变体,以牺牲准确性为代价减少内存使用。
- 最适合极低内存设置。
OuteTTS-1.0-0.6B-q6_k.gguf
- 输出和嵌入量化为Q8_0。
- 所有其他层量化为Q6_K。
OuteTTS-1.0-0.6B-q8_0.gguf
- 完全Q8量化的模型,以提高准确性。
- 需要更多内存,但提供更高的精度。
OuteTTS-1.0-0.6B-iq3_xs.gguf
- IQ3_XS量化,针对极致内存效率进行优化。
- 最适合超低内存设备。
OuteTTS-1.0-0.6B-iq3_m.gguf
- IQ3_M量化,提供中等块大小以提高准确性。
- 适用于低内存设备。
OuteTTS-1.0-0.6B-q4_0.gguf
- 纯Q4_0量化,针对ARM设备进行优化。
- 最适合低内存环境。
- 若追求更高准确性,建议使用IQ4_NL。
测试LLM
如果你觉得这些模型有用:
- 请点击“点赞” ,如果你觉得此内容有帮助!
- 帮助我测试我的人工智能网络监控助手,进行量子就绪安全检查: 量子网络监控
测试方法: 选择一种人工智能助手类型:
TurboLLM
(GPT-4o-mini)HugLLM
(Hugging Face开源模型)TestLLM
(仅支持CPU的实验性模型)
测试内容: 我正在挑战小型开源模型在人工智能网络监控方面的极限,具体包括:
- 针对实时网络服务进行函数调用
- 探索模型在处理以下任务时可以达到的最小规模:
- 自动化Nmap扫描
- 量子就绪检查
- 网络监控任务
TestLLM ——当前的实验性模型(在2个CPU线程上运行llama.cpp):
- 零配置设置
- 加载时间约30秒(推理速度慢,但无API成本)
- 寻求帮助! 如果你对边缘设备人工智能感兴趣,让我们一起合作!
其他助手:
-
TurboLLM ——使用gpt-4o-mini进行:
- 创建自定义命令处理器,在量子网络监控代理上运行.NET代码
- 实时网络诊断和监控
- 安全审计
- 渗透测试(Nmap/Metasploit)
-
HugLLM ——最新的开源模型:
- 在Hugging Face推理API上运行
示例命令供你测试:
"Give me info on my websites SSL certificate"
"Check if my server is using quantum safe encyption for communication"
"Run a comprehensive security audit on my server"
"Create a cmd processor to .. (what ever you want)"
注意:你需要安装量子网络监控代理才能运行.NET代码。这是一个非常灵活且强大的功能,请谨慎使用!
最终说明
我自掏腰包资助用于创建这些模型文件的服务器、运行量子网络监控服务,并支付Novita和OpenAI的推理费用。模型创建和量子网络监控项目背后的所有代码都是开源的。你可以随意使用任何对你有帮助的内容。
如果你认可我的工作,请考虑请我喝杯咖啡 ☕。你的支持将有助于支付服务成本,并让我为大家提高令牌限制。
我也欢迎工作机会或赞助。
感谢!
OuteTTS版本1.0
此更新在语音合成和语音克隆方面带来了显著改进,以紧凑的尺寸提供了更强大、准确且用户友好的体验。
OuteTTS Python包v0.4.2
新版本随最新的OuteTTS版本新增了批量推理生成功能。
批量RTF基准测试
使用NVIDIA L40S GPU进行测试
多语言能力
- 支持语言:英语、中文、荷兰语、法语、格鲁吉亚语、德语、匈牙利语、意大利语、日语、韩语、拉脱维亚语、波兰语、俄语、西班牙语。
- 未训练语言:模型可以在未训练的语言中生成语音,但效果可能不同。你可以尝试未列出的语言,但结果可能不是最优的。
使用建议
说话人参考
该模型设计为与说话人参考一起使用。如果没有说话人参考,模型会生成随机的语音特征,通常会导致输出质量较低。模型会继承参考说话人的情感、风格和口音。当使用同一说话人转录到其他语言时,你可能会发现模型保留了原始口音。
多语言应用
建议为你打算使用的语言创建一个说话人配置文件。这有助于在该特定语言中获得最佳效果,包括语调、口音和语言特征。
虽然模型支持跨语言语音,但仍然依赖于参考说话人。如果说话人有明显的口音(例如英式英语),其他语言可能也会带有该口音。
最佳音频长度
- 最佳性能:单次运行生成约42秒的音频(约8192个令牌)。建议在生成时不要接近此窗口的限制。通常,最多7000个令牌可获得最佳效果。
- 使用说话人参考时的上下文减少:如果说话人参考时长为10秒,有效上下文将减少到约32秒。
温度设置建议
测试表明,0.4的温度是准确性的理想起始点(使用以下采样设置)。然而,某些语音参考可能受益于更高的温度以增强表现力,或稍低的温度以实现更精确的语音复制。
验证说话人编码
如果克隆语音质量不佳,请检查编码后的说话人样本。
interface.decode_and_save_speaker(speaker=your_speaker, path="speaker.wav")
DAC音频重建模型是有损的,带有削波、过大音量或异常语音特征的样本可能会引入编码问题,影响输出质量。
采样配置
使用OuteTTS 1.0版本时,务必使用采样配置部分指定的设置。
- 重复惩罚实现特别重要——此模型需要对最近的64个令牌窗口应用惩罚,而不是在整个上下文窗口中应用。对整个上下文进行惩罚会导致模型生成破碎或低质量的输出。
- 为解决此限制,outetts库会自动为所有后端设置所有必要的采样器和补丁。
- 如果你使用自定义实现,请确保正确实现这些要求。
🔧 技术细节
采样考虑
当使用OuteTTS版本1.0时,必须使用采样配置部分指定的设置。重复惩罚实现尤为重要,此模型要求将惩罚应用于64个令牌的最近窗口,而不是整个上下文窗口。对整个上下文进行惩罚会导致模型产生破碎或低质量的输出。
为解决这一限制,outetts库会自动为所有后端设置所有必要的采样器和补丁。若使用自定义实现,需确保正确实现这些要求。
📄 许可证
本项目采用Apache-2.0许可证。




