音色快速复刻

平台提供良好的音色复刻能力,使用您的语料进行音色复刻,得到试听音频与 Voice ID(供后续正式语音合成使用)。

使用流程

快速复刻功能实现具体操作流程如下:

  1. 上传待克隆音频:调用 上传复刻音频 上传待克隆的音频文件并获取 file_id
  • 上传的音频文件格式需为单声道 wav 格式
  • 上传的音频文件的时长最少应不低于 5 秒,最长应不超过 2 分钟
  1. 上传示例音频 (可选):若需要提供示例音频以增强克隆效果,调用 上传示例音频 上传示例音频文件并获得对应的 file_id。填写在 clone_prompt 中的 prompt_audio 中。
  • 上传的音频文件格式需为单声道 wav 格式
  • 上传的音频文件的时长最少应不低于 5 秒,最长应不超过 2 分钟
  1. 调用复刻接口:基于获取的 file_id 和自定义的 voice_id 作为输入参数,调用 快速复刻接口 克隆音色。

  2. 使用克隆音色:使用复刻生成的 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)