Files
2025-08-01 23:02:17 +08:00

7.1 KiB
Raw Permalink Blame History

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
  • 🔄 无需重启 - 配置更改立即生效
  • 🛠️ 兼容性强 - 支持媒体界面和服务调用

安装

  1. siliconflow_tts 文件夹复制到你的 custom_components 目录
  2. 重启 Home Assistant
  3. 在配置文件中添加以下配置:
# 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(自定义音色)

  • 类型:stringURI格式)
  • 描述:使用上传后获得的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所需的特殊标记格式

自定义音色使用指南

方法一:使用本地音频文件

音频文件要求

  1. 格式:支持mp3, wav, opus, pcm格式
  2. 时长:建议5-30秒,太短可能影响音色提取效果
  3. 质量:建议使用清晰、无噪音的音频
  4. 内容:建议包含完整的句子,避免背景音乐

文件路径

  • 可以使用绝对路径:/config/custom_components/siliconflow_tts/Ari.mp3
  • 也可以使用相对路径(相对于Home Assistant配置目录)

方法二:使用上传的URI参考音频

上传步骤

  1. 使用提供的upload_voice.py脚本上传音频文件
  2. 脚本会返回一个URI格式的字符串
  3. 在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"

故障排除

  1. API密钥错误:确保API密钥正确且有效
  2. 网络连接问题:检查网络连接是否正常
  3. 参数范围错误:确保speed和gain参数在有效范围内
  4. 音频格式不支持:确保选择的音频格式和采样率组合有效
  5. 自定义音色文件不存在:检查音频文件路径是否正确
  6. 自定义音色编码失败:检查音频文件是否损坏或格式不支持

日志

组件会记录详细的日志信息,可以在Home Assistant的开发者工具中查看:

logger:
  custom_components.siliconflow_tts: debug

许可证

MIT License