首页
/ Linly-Talker项目TTS API接口详解与使用指南

Linly-Talker项目TTS API接口详解与使用指南

2025-07-10 06:48:03作者:裴麒琰

概述

Linly-Talker项目中的TTS(文本转语音)API模块提供了多种语音合成技术的接口实现,包括EdgeTTS、PaddleTTS、GPT-SoVITS和CosyVoice等模型。本文将深入解析这个API的设计架构、功能特点以及使用方法。

API架构设计

该TTS API采用FastAPI框架构建,具有以下核心组件:

  1. 模型管理模块:负责不同TTS模型的加载和切换
  2. 请求处理模块:处理客户端发送的TTS请求
  3. 预测执行模块:根据请求调用对应的TTS模型进行语音合成
  4. 资源管理模块:显存和内存的清理机制

支持的TTS模型

1. EdgeTTS

微软提供的在线语音合成服务,支持多种语言和音色选择。特点是音质自然,但需要网络连接。

2. PaddleTTS

基于PaddlePaddle框架的语音合成模型,支持FastSpeech2声学模型和PWGan声码器。

3. GPT-SoVITS

结合GPT和SoVITS技术的语音克隆模型,能够通过少量样本学习特定说话人的音色特征。

4. CosyVoice

提供三种工作模式:

  • 预训练音色模式:使用预训练的中文男/女声
  • 3s极速复刻:通过3秒音频快速克隆音色
  • 跨语种复刻:支持跨语言的音色克隆

核心API接口详解

1. 模型切换接口 /tts_change_model/

@app.post("/tts_change_model/")
async def change_model(model_name: str = Query(..., description="要加载的TTS模型名称"))

此接口用于动态切换TTS模型,支持以下模型名称:

  • 'EdgeTTS'
  • 'PaddleTTS'
  • 'GPT-SoVITS克隆声音'
  • 'CosyVoice-SFT模式'
  • 'CosyVoice-克隆翻译模式'

2. 语音合成接口 /tts_response/

@app.post("/tts_response/")
async def tts_response(
    text: str = Form('你好,我是Linly-Talker。'),
    voice: str = Form('zh-CN-XiaoxiaoNeural'),
    # 其他参数...
)

这是核心的语音合成接口,接收文本和各类参数,返回合成的语音文件。参数根据不同的TTS模型有所差异。

请求参数详解

通用参数

  • text: 要合成的文本内容
  • tts_method: 指定使用的TTS方法
  • save_path: 输出音频文件路径

EdgeTTS特有参数

  • voice: 音色选择(如'zh-CN-XiaoxiaoNeural')
  • rate: 语速
  • volume: 音量
  • pitch: 音高

PaddleTTS特有参数

  • am: 声学模型类型
  • voc: 声码器类型
  • lang: 语言
  • male: 是否使用男声

GPT-SoVITS特有参数

  • ref_audio: 参考音频文件
  • prompt_text: 提示文本
  • cut_method: 文本切割方法

CosyVoice特有参数

  • cosyvoice_mode: 工作模式
  • sft_dropdown: 预训练音色选择
  • speed_factor: 语速因子

使用示例

1. 切换模型

curl -X POST "http://localhost:8001/tts_change_model/" -H "Content-Type: application/json" -d '{"model_name":"EdgeTTS"}'

2. 使用EdgeTTS合成语音

curl -X POST "http://localhost:8001/tts_response/" \
-F "text=你好,欢迎使用Linly-Talker" \
-F "tts_method=EdgeTTS" \
-F "voice=zh-CN-XiaoxiaoNeural"

3. 使用GPT-SoVITS克隆声音

curl -X POST "http://localhost:8001/tts_response/" \
-F "text=这是要合成的文本" \
-F "tts_method=GPT-SoVITS克隆声音" \
-F "prompt_text=这是提示文本" \
-F "prompt_language=中文" \
-F "ref_audio=@reference.wav"

技术实现细节

  1. 内存管理:每次切换模型前会调用clear_memory()函数清理显存
  2. 错误处理:对各种异常情况进行了捕获和处理,返回合适的HTTP状态码
  3. 文件处理:支持上传参考音频文件用于语音克隆
  4. 日志记录:使用loguru库记录运行日志

最佳实践建议

  1. 对于需要快速响应的场景,推荐使用EdgeTTS
  2. 对于离线环境,可以使用PaddleTTS
  3. 需要特定音色克隆时,GPT-SoVITS和CosyVoice是不错的选择
  4. 频繁切换模型时,注意显存可能不足的问题
  5. 生产环境中应考虑添加API鉴权机制

总结

Linly-Talker的TTS API提供了丰富灵活的语音合成能力,通过本文的详细解析,开发者可以更好地理解其设计原理和使用方法,从而在自己的项目中高效地集成语音合成功能。