实现一个用于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)
相关推荐
xhxxx19 小时前
AI打字机的秘密:一个 buffer 如何让机器学会“慢慢说话”
前端·vue.js·openai
ohyeah21 小时前
使用 Vue 3 实现大模型流式输出:从零搭建一个简易对话 Demo
前端·vue.js·openai
泯泷2 天前
AI 界的“USB-C”协议来了:让你的 AI 拥有即插即用的“手和脚”
aigc·openai·ai编程
泯泷2 天前
告别“接口地狱”,MCP 协议如何让 AI Agent 像乐高一样即插即用?
人工智能·openai·ai编程
陪我一起学编程2 天前
Swarm框架智能体应用开发与部署
大模型·openai·多模态·swarm·智能体·智能体应用开发·智能体应用部署
带刺的坐椅2 天前
Solon AI 开发学习16 - generate - 生成模型(图、音、视)
java·ai·llm·openai·solon
机器之心3 天前
登顶SuperCLUE DeepSearch,openPangu-R-72B深度搜索能力跃升
人工智能·openai
oden3 天前
Workers AI 完整教程:每天白嫖 10000 次大模型调用,比 OpenAI 省 90%
aigc·openai·api
鱼鱼块3 天前
"从自然语言到数据库:AI First 时代的编程与开发革命"
sqlite·llm·openai
Max8123 天前
深入理解 LLM 的"思考工具":从零实现 ReasoningTools
openai·agent