mirror of
https://github.com/Ethan930717/siliconflow_tts.git
synced 2026-07-21 22:53:59 +08:00
7.1 KiB
7.1 KiB
SiliconFlow TTS 组件
这是一个基于硅基流动API的Home Assistant TTS组件,支持CosyVoice2-0.5B模型。
功能特性
- 🎭 动态音色配置 - 在
configuration.yaml中自定义音色,无需修改代码 - 🎵 内置音色:阿狸、露露、索拉卡、扎克、吴楠
- 🎚️ 前端可视化配置 - 在 Home Assistant 界面中实时调整参数
- 🎧 支持多种音频格式:mp3, wav, opus, pcm
- ⚡ 支持语速调节(0.25-4.0倍速)
- 🔊 支持音量增益调节(-10到+10 dB)
- 😊 支持情感表达
- 📊 支持多种采样率(最高44.1kHz)
- 🔄 无需重启 - 配置更改立即生效
- 🛠️ 兼容性强 - 支持媒体界面和服务调用
安装
- 将
siliconflow_tts文件夹复制到你的custom_components目录 - 重启 Home Assistant
- 在配置文件中添加以下配置:
# configuration.yaml
siliconflow_tts:
api_key: "your_api_key_here"
# 可选:自定义音色选项
custom_voices:
"speech:Dahu-HA-MyVoice:qc10fwc040:customid123": "我的专属音色"
"speech:Dahu-HA-BossVoice:qc10fwc040:customid456": "老板音色"
"speech:your-custom-voice-id": "自定义名称"
配置选项
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
api_key |
string | 是 | 硅基流动API密钥 |
custom_voices |
dict | 否 | 自定义音色选项(音色ID: 显示名称) |
🎭 自定义音色配置
您可以在 configuration.yaml 中添加自定义音色,这样就不需要修改代码:
基础配置
siliconflow_tts:
custom_voices:
"speech:Dahu-HA-MyCustom:qc10fwc040:uniqueid123": "我的音色"
"speech:Dahu-HA-Family:qc10fwc040:uniqueid456": "家人音色"
完整配置示例
siliconflow_tts:
custom_voices:
# 专业音色
"speech:Dahu-HA-Professional:qc10fwc040:prof001": "专业播音"
"speech:Dahu-HA-News:qc10fwc040:news001": "新闻主播"
# 个人音色
"speech:Dahu-HA-Dad:qc10fwc040:family001": "爸爸的声音"
"speech:Dahu-HA-Mom:qc10fwc040:family002": "妈妈的声音"
# 角色音色
"speech:Dahu-HA-Robot:qc10fwc040:robot001": "机器人音色"
"speech:Dahu-HA-Child:qc10fwc040:child001": "儿童音色"
使用自定义音色
配置后,您可以在前端配置界面中选择这些音色,也可以在服务调用中使用:
service: tts.speak
data:
entity_id: tts.siliconflow_tts
message: "你好,我是专业播音音色"
voice: "speech:Dahu-HA-Professional:qc10fwc040:prof001"
使用方法
在自动化中使用
automation:
- alias: "TTS测试"
trigger:
platform: state
entity_id: input_boolean.tts_test
action:
- service: tts.siliconflow_say
data:
message: "你好,这是TTS测试"
voice: "anna"
speed: 1.2
gain: 2
在脚本中使用
script:
tts_demo:
sequence:
- service: tts.siliconflow_say
data:
message: "今天天气很好"
voice: "bella"
emotion: "happy"
speed: 1.0
gain: 0
使用自定义音色
# 使用预设语音
script:
preset_voice_demo:
sequence:
- service: tts.siliconflow_say
data:
message: "你能用高兴的情感说吗?<|endofprompt|>今天真是太开心了!"
voice: "FunAudioLLM/CosyVoice2-0.5B:anna"
speed: 1.0
gain: 0
# 使用自定义音色URI
script:
custom_voice_demo:
sequence:
- service: tts.siliconflow_say
data:
message: "你能用高兴的情感说吗?<|endofprompt|>这是使用自定义音色的测试!"
reference_audio: "speech:Dahu-HA-Ari:qc10fwc040:jxlvonagnnzdvbotrmrr"
speed: 1.0
gain: 0
支持的参数
voice(预设语音)
FunAudioLLM/CosyVoice2-0.5B:alex- Alex (男声)FunAudioLLM/CosyVoice2-0.5B:anna- Anna (女声)FunAudioLLM/CosyVoice2-0.5B:bella- Bella (女声)FunAudioLLM/CosyVoice2-0.5B:benjamin- Benjamin (男声)FunAudioLLM/CosyVoice2-0.5B:charles- Charles (男声)FunAudioLLM/CosyVoice2-0.5B:claire- Claire (女声)FunAudioLLM/CosyVoice2-0.5B:david- David (男声)FunAudioLLM/CosyVoice2-0.5B:diana- Diana (女声)
reference_audio(自定义音色)
- 类型:string(URI格式)
- 描述:使用上传后获得的URI作为自定义音色
- 格式:speech:custom-name:model-id:unique-id
- 注意:与voice参数互斥,同时使用时会优先使用reference_audio
- 推荐:使用upload_voice.py脚本先上传音频文件获取URI
response_format(音频格式)
mp3- MP3格式(默认)wav- WAV格式opus- Opus格式pcm- PCM格式
speed(语速)
- 范围:0.25 - 4.0
- 默认:1.0
gain(音量增益)
- 范围:-10 - +10
- 默认:0
sample_rate(采样率)
- mp3: 32000, 44100 Hz
- wav/pcm: 8000, 16000, 24000, 32000, 44100 Hz
- opus: 48000 Hz
emotion(情感)
- 支持各种情感描述,如:happy, sad, angry, excited等
- 会自动添加API所需的特殊标记格式
自定义音色使用指南
方法一:使用本地音频文件
音频文件要求
- 格式:支持mp3, wav, opus, pcm格式
- 时长:建议5-30秒,太短可能影响音色提取效果
- 质量:建议使用清晰、无噪音的音频
- 内容:建议包含完整的句子,避免背景音乐
文件路径
- 可以使用绝对路径:
/config/custom_components/siliconflow_tts/Ari.mp3 - 也可以使用相对路径(相对于Home Assistant配置目录)
方法二:使用上传的URI参考音频
上传步骤
- 使用提供的
upload_voice.py脚本上传音频文件 - 脚本会返回一个URI格式的字符串
- 在TTS配置中直接使用这个URI
使用示例
# 运行上传脚本
python3 upload_voice.py
# 脚本会输出类似这样的URI:
# speech:Dahu-HA-Ari:qc10fwc040:jxlvonagnnzdvbotrmrr
使用示例
# 使用预设语音
- service: tts.siliconflow_say
data:
message: "你能用高兴的情感说吗?<|endofprompt|>使用预设语音测试!"
voice: "FunAudioLLM/CosyVoice2-0.5B:anna"
# 使用自定义音色URI
- service: tts.siliconflow_say
data:
message: "你能用高兴的情感说吗?<|endofprompt|>使用自定义音色测试!"
reference_audio: "speech:Dahu-HA-Ari:qc10fwc040:jxlvonagnnzdvbotrmrr"
故障排除
- API密钥错误:确保API密钥正确且有效
- 网络连接问题:检查网络连接是否正常
- 参数范围错误:确保speed和gain参数在有效范围内
- 音频格式不支持:确保选择的音频格式和采样率组合有效
- 自定义音色文件不存在:检查音频文件路径是否正确
- 自定义音色编码失败:检查音频文件是否损坏或格式不支持
日志
组件会记录详细的日志信息,可以在Home Assistant的开发者工具中查看:
logger:
custom_components.siliconflow_tts: debug
许可证
MIT License