音色快速复刻
平台提供良好的音色复刻能力,使用您的语料进行音色复刻,得到试听音频与 Voice ID(供后续正式语音合成使用)。
使用流程
快速复刻功能实现具体操作流程如下:
- 上传待克隆音频:调用 上传复刻音频 上传待克隆的音频文件并获取
file_id。
- 上传的音频文件格式需为单声道 wav 格式
- 上传的音频文件的时长最少应不低于 5 秒,最长应不超过 2 分钟
- 上传示例音频 (可选):若需要提供示例音频以增强克隆效果,调用 上传示例音频 上传示例音频文件并获得对应的
file_id。填写在clone_prompt中的prompt_audio中。
- 上传的音频文件格式需为单声道 wav 格式
- 上传的音频文件的时长最少应不低于 5 秒,最长应不超过 2 分钟
-
调用复刻接口:基于获取的
file_id和自定义的voice_id作为输入参数,调用 快速复刻接口 克隆音色。 -
使用克隆音色:使用复刻生成的
voice_id,根据实际需求调用 创建异步语音合成任务 等语音生成接口。
过程示例
1. 上传复刻音频
Python
"""
本示例用于获取复刻音频的 file_id。
注意:需要先将密钥信息写入环境变量 `API_KEY`。
"""
import requests
import os
api_key = os.getenv("API_KEY")
url = "https://maas-api.hivoice.cn/v1/files/upload"
payload = {"purpose": "voice_clone"}
files = [
("file", ("clone_input.wav", open("/path/to/clone_input.wav", "rb")))
]
headers = {
"Authorization": f"Bearer {api_key}"
}
response = requests.post(url, headers=headers, data=payload, files=files)
response.raise_for_status()
file_id = response.json().get("file", {}).get("file_id")
print(file_id)
2. 上传参考音频
Python
"""
本示例用于获取示例音频的 file_id。
注意:需要先将密钥信息写入环境变量 `API_KEY`。
"""
import requests
import os
api_key = os.getenv("API_KEY")
url = "https://maas-api.hivoice.cn/v1/files/upload"
payload = {"purpose": "prompt_audio"}
files = [
("file", ("clone_prompt.wav", open("/path/to/clone_prompt.wav", "rb")))
]
headers = {
"Authorization": f"Bearer {api_key}"
}
response = requests.post(url, headers=headers, data=payload, files=files)
response.raise_for_status()
prompt_file_id = response.json().get("file", {}).get("file_id")
print(prompt_file_id)
3. 进行音色克隆
Python
"""
本示例用于音色克隆。
注意:需要设置环境变量 `API_KEY`,
并将 "<voice_id>", <file_id_of_cloned_voice>, <file_id_of_prompt_audio> 替换为实际值。
"""
import requests
import json
import os
api_key = os.getenv("API_KEY")
url = "https://maas-api.hivoice.cn/v1/audio/voices/clone"
clone_payload = {
"file_id": file_id,
"voice_id": "<your_custom_voice_id>",
"clone_prompt": {
"prompt_audio": prompt_file_id,
"prompt_text": "我国的传统风俗过年每年都要贴春联"
},
"text": "前方高能,请保护好你的双眼,防止被惊吓",
"model":"u2-tts-clone"
}
clone_headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
response = requests.post(url, headers=clone_headers, json=clone_payload)
response.raise_for_status()
print(response.text)