实现一个用于cosoyVoice2的接口并兼容OpenAI TTS

cosyVoice是阿里开源的一个很棒的TTS项目,可以仅几秒音频样本即可克隆音色,最近更新到了cosyVoice2版本,相比之前有很大提升。

简单更新了下对应的api接口文件,并添加了兼容 OpenAI tts 的接口,使用方式同 OpenAI tts 一致,只不过 voice 角色名改为 cosyVoice支持的即可。

这是用于 CosyVoice2 的 api 文件,部署好 cosyVoice2 项目后,将该 api.py 文件同 webui.py放在一起,然后执行 python api.py

如果是三方整合包,将 api.py 同 bat 脚本放在一起,然后查找其中python.exe所在的位置,在bat所在当前文件夹地址栏中输入cmd回车,然后执行 目录/python.exe api.py

api.py 下载地址 github.com/jianchang51...

具体来说有以下几个接口

根据内置角色合成文字

  • 接口地址: /tts

  • 单纯将文字合成语音,不进行音色克隆

  • 必须设置的参数:

text:需要合成语音的文字

role: '中文女', '中文男', '日语男', '粤语女', '英文女', '英文男', '韩语女' 选择一个

  • 成功返回:wav音频数据

  • 示例代码

kotlin 复制代码
data={
    "text":"你好啊亲爱的朋友们",
    "reference_audio":"10.wav"
}

response=requests.post(f'http://127.0.0.1:9933/tts',data=data,timeout=3600)

同语言克隆音色合成

  • 地址:/clone_eq

参考音频发音语言和需要合成的文字语言一致,例如参考音频是中文发音,同时需要根据该音频将中文文本合成为语音

  • 必须设置参数:

text: 需要合成语音的文字

reference_audio:需要克隆音色的参考音频

reference_text:参考音频对应的文字内容 参考音频相对于 api.py 的路径,例如引用1.wav,该文件和api.py在同一文件夹内,则填写 1.wav

  • 成功返回:wav数据

  • 示例代码

kotlin 复制代码
data={
    "text":"你好啊亲爱的朋友们。",
    "reference_audio":"10.wav",
    "reference_text":"希望你过的比我更好哟。"
}

response=requests.post(f'http://127.0.0.1:9933/tts',data=data,timeout=3600)

不同语言音色克隆:

  • 地址: /cone

参考音频发音语言和需要合成的文字语言不一致,例如需要根据中文发音的参考音频,将一段英文文本合成为语音。

  • 必须设置参数:

text: 需要合成语音的文字

reference_audio:需要克隆音色的参考音频 参考音频相对于 api.py 的路径,例如引用1.wav,该文件和api.py在同一文件夹内,则填写 1.wav

  • 成功返回:wav数据

  • 示例代码

kotlin 复制代码
data={
    "text":"親友からの誕生日プレゼントを遠くから受け取り、思いがけないサプライズと深い祝福に、私の心は甘い喜びで満たされた!。",
    "reference_audio":"10.wav"
}

response=requests.post(f'http://127.0.0.1:9933/tts',data=data,timeout=3600)

兼容openai tts

  • 接口地址 /v1/audio/speech
  • 请求方法 POST
  • 请求类型 Content-Type: application/json
  • 请求参数 input: 要合成的文字 model: 固定 tts-1, 兼容openai参数,实际未使用 speed: 语速,默认1.0 reponse_format:返回格式,固定wav音频数据 voice: 仅用于文字合成时,取其一 '中文女', '中文男', '日语男', '粤语女', '英文女', '英文男', '韩语女'

用于克隆时,填写引用的参考音频相对于 api.py 的路径,例如引用1.wav,该文件和api.py在同一文件夹内,则填写 1.wav

  • 示例代码
ini 复制代码
from openai import OpenAI

client = OpenAI(api_key='12314', base_url='http://127.0.0.1:9933/v1')
with  client.audio.speech.with_streaming_response.create(
                    model='tts-1',
                    voice='中文女',
                    input='你好啊,亲爱的朋友们',
                    speed=1.0                    
                ) as response:
    with open('./test.wav', 'wb') as f:
       for chunk in response.iter_bytes():
            f.write(chunk)
相关推荐
机器之心14 小时前
Adam的稳+Muon的快?华为诺亚开源ROOT破解大模型训练「既要又要」的两难困境
人工智能·openai
魁首16 小时前
AI Agent 协议演进:从 MCP 到 ACP 的架构对比与未来展望
openai·gemini·mcp
Jim86017 小时前
使用自定义API接入OpenAI CodeX配置教程
openai
机器之心2 天前
小米开源首个跨域具身基座模型MiMo-Embodied,29个榜单SOTA
人工智能·openai
重整旗鼓~2 天前
2.LangChain4j+springboot+大模型整合
openai·springboot·ollama·langchain4j
win4r2 天前
昨夜炸场!Claude Opus 4.5 发布,Chrome 插件“夺舍”浏览器,实测这7大功能令人头皮发麻
aigc·openai·claude
机器之心3 天前
从推荐算法优化到AI4S、Pico和大模型,杨震原长文揭秘字节跳动的技术探索
人工智能·openai
机器之心3 天前
哈工大深圳团队推出Uni-MoE-2.0-Omni:全模态理解、推理及生成新SOTA
人工智能·openai
带刺的坐椅3 天前
(让 Java IA & MCP 更简单 )Solon AI v3.7.2 发布
ai·chatgpt·openai·solon·mcp
爱吃的小肥羊3 天前
GPT-5.1-Codex-Max正式发布,超越Gemini 3,编程能力第一!(附使用方法)
后端·aigc·openai