实现一个用于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)
相关推荐
新智元7 小时前
OpenAI 深夜大招暴打 Manus!智能体全家桶杀器一统 API,4 行代码轻松上手
人工智能·openai
新智元1 天前
OpenAI 最强模型惨遭剖脑,CoT 写下作弊自白书!不写代码耍心机被当场抓包
人工智能·openai
机器之心1 天前
Manus 被破解了?曝出系统提示词和背后大模型,CTO 也回复了
人工智能·openai
新智元2 天前
1 次搭建完胜 1 亿次编码,MCP 硅谷疯传!Anthropic 协议解锁智能体「万能手」
人工智能·openai
机器之心2 天前
稚晖君的「好东西」揭晓!首个通用具身基座模型,机器人告别「看得懂做不来」
人工智能·openai
Json_2 天前
Cursor 编辑器使用文档,一款AI 代码编辑器, 人人都可以写代码!!!Tab,Tab,再来一次 Tab
人工智能·openai·cursor
新智元2 天前
Manus 火到国外?网友实测惊呆!00 后博士生 0 天复刻霸榜开源第一
人工智能·openai
机器之心2 天前
7B 级形式化推理与验证小模型,媲美满血版 DeepSeek-R1,全面开源!
人工智能·openai
新智元2 天前
10²⁶参数,AGI 还需 70 年!清华人大预测届时 GPU 总价达 4000 万倍苹果市值
人工智能·openai
Json_3 天前
人工智能学习(AI大模型) 必须要知道的两个网站 Ollama 和 Hugging Face 文章里含【Ollama 安装部署教程】
人工智能·openai·ollama