声音克隆
平台提供良好的能力,使用您的语料进行声音克隆,得到试听音频与 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)
