SiliconFlow

上传参考音频

Upload user-provided voice style, which can be in base64 encoding or file format.

POST
/uploads/audio/voice
AuthorizationBearer <token>required

Use the following format for authentication: Bearer

In: header

modelstringrequired

Predefined voice style model name

Example"FunAudioLLM/CosyVoice2-0.5B"
customNamestringrequired

User-defined voice style name

Example"your-voice-name"
textstringrequired

Corresponding text content for the audio

Example"在一无所知中, 梦里的一天结束了,一个新的轮回便会开始"
audiostring

Audio file encoded in base64 with the header format of data:audio/mpeg;base64

Example"data:audio/mpeg;base64,aGVsbG93b3JsZA=="
modelstringrequired

Predefined voice style model name

Example"FunAudioLLM/CosyVoice2-0.5B"
customNamestringrequired

User-defined voice style name

Example"your-voice-name"
textstringrequired

Corresponding text content for the audio

Example"在一无所知中, 梦里的一天结束了,一个新的轮回便会开始"
filefile

File to upload

Formatbinary
Example"/path/to/audio.mp3"

Response Body

Successful response

TypeScript Definitions

Use the response body type in TypeScript.

uristring
Example"speech:your-voice-name:xxx:xxx"

curl -X POST "https://api.siliconflow.cn/v1/uploads/audio/voice" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@test.mp3" \
  -F "model=IndexTeam/IndexTTS-2" \
  -F "customName=your-voice-name" \
  -F "text=慢工出细活,再给我两分钟,你马上就能见识到超梦分析的厉害了"        
import requests

url = "https://api.siliconflow.cn/v1/uploads/audio/voice"
headers = {
    "Authorization": "Bearer YOUR_API_KEY" # 从https://cloud.siliconflow.cn/account/ak获取
}
files = {
    "file": open("test.mp3", "rb")  # 参考音频文件
}
data = {
    "model": "IndexTeam/IndexTTS-2",  # 模型名称
    "customName": "your-voice-name", # 参考音频名称
    "text": "慢工出细活,再给我两分钟,你马上就能见识到超梦分析的厉害了" # 参考音频的文字内容
}

response = requests.post(url, headers=headers, files=files, data=data)
print(response.text)
// 使用 FormData 处理文件上传
const formData = new FormData();

// 添加文件
const fileInput = document.querySelector('input[type="file"]');
const file = fileInput.files[0]; // 或者使用 File API 获取文件
formData.append('file', file);

// 添加其他字段
formData.append('model', 'IndexTeam/IndexTTS-2');
formData.append('customName', 'your-voice-name');
formData.append('text', '慢工出细活,再给我两分钟,你马上就能见识到超梦分析的厉害了');

// 发送请求
const apiKey = 'YOUR_API_KEY'; // 替换为你的 API Key
const url = 'https://api.siliconflow.cn/v1/uploads/audio/voice';

fetch(url, {
    method: 'POST',
    headers: {
        'Authorization': `Bearer ${apiKey}`
    },
    body: formData
})
.then(response => {
    if (!response.ok) {
        throw new Error(`HTTP error! status: ${response.status}`);
    }
    return response.json();
})
.then(data => {
    console.log('Success:', data);
})
.catch(error => {
    console.error('Error:', error);
});
curl -X POST "https://api.siliconflow.cn/v1/uploads/audio/voice" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "IndexTeam/IndexTTS-2",
    "customName": "your-voice-name",
    "audio": "data:audio/mpeg;base64,'$(base64 -i x1.mp3 | tr -d '\n')'",
    "text": "慢工出细活,再给我两分钟,你马上就能见识到超梦分析的厉害了"
  }'        
import requests
import json
import base64

url = "https://api.siliconflow.cn/v1/uploads/audio/voice"
headers = {
    "Authorization": "Bearer YOUR_API_KEY" , # 从https://cloud.siliconflow.cn/account/ak获取
    "Content-Type": "application/json"
}
data = {
    "model": "IndexTeam/IndexTTS-2", # 模型名称
    "customName": "your-voice-name", # 用户自定义的音频名称
    "audio": "data:audio/mpeg;base64," + base64.b64encode(open("x1.mp3", "rb").read()).decode("utf-8"), # 参考音频的 base64 编码
    "text": "慢工出细活,再给我两分钟,你马上就能见识到超梦分析的厉害了" # 参考音频的文字内容
}

response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.text)
const fs = require('fs');
const axios = require('axios'); // 需要先安装: npm install axios

async function uploadAudio() {
    const url = "https://api.siliconflow.cn/v1/uploads/audio/voice";
    
    // 读取音频文件并转换为base64
    const audioBuffer = fs.readFileSync('x1.mp3');
    const base64Audio = audioBuffer.toString('base64');
    
    const headers = {
        "Authorization": "Bearer YOUR_API_KEY", // 从https://cloud.siliconflow.cn/account/ak获取
        "Content-Type": "application/json"
    };
    
    const data = {
        "model": "IndexTeam/IndexTTS-2", // 模型名称
        "customName": "your-voice-name", // 用户自定义的音频名称
        "audio": "data:audio/mpeg;base64," + base64Audio, // 参考音频的 base64 编码
        "text": "慢工出细活,再给我两分钟,你马上就能见识到超梦分析的厉害了" // 参考音频的文字内容
    };
    
    try {
        const response = await axios.post(url, data, { headers });
        console.log(response.data);
    } catch (error) {
        console.error('Error:', error.response ? error.response.data : error.message);
    }
}

uploadAudio();
{
  "uri": "speech:your-voice-name:xxx:xxx"
}
{
  "code": 20012,
  "message": "string",
  "data": "string"
}
"Invalid token"
"Forbidden"
"404 page not found"
{
  "message": "Request was rejected due to rate limiting. If you want more, please contact contact@siliconflow.cn. Details:TPM limit reached.",
  "data": "string"
}
{
  "code": 50505,
  "message": "Model service overloaded. Please try again later.",
  "data": "string"
}
"string"