TTS API 接口
服务地址: https://lglfr-tts.hf.space
生成语音 (POST /api/tts)
{
"text": "要转换的文本",
"model": "zh_CN-huayan-medium",
"speed": 1.0,
"volume": 1.0,
"noise_scale": 0.667,
"sentence_silence": 0.5
}
音色克隆 API 接口
服务地址: https://lglfr-ivc.hf.space
音色克隆 (POST /api/clone)
{
"target_audio": "data:audio/wav;base64,UklGRi...",
"source_audio": "data:audio/wav;base64,UklGRi...",
"tau": 0.3
}
响应示例:
{
"success": true,
"message": "音色克隆成功",
"result_audio": "UklGRi...",
"stats": {
"extract_time": "1.23s",
"clone_time": "2.45s",
"total_time": "3.68s"
}
}
流式处理 API 使用
流式处理通过客户端将长音频切分为多个片段,然后并发处理,最后合并结果。
JavaScript 流式处理示例
// 切分音频为片段
async function splitAudioIntoSegments(audioBlob, segmentDuration = 10) {
const audioContext = new AudioContext();
const arrayBuffer = await audioBlob.arrayBuffer();
const audioBuffer = await audioContext.decodeAudioData(arrayBuffer);
// 计算片段数量
const samplesPerSegment = segmentDuration * audioBuffer.sampleRate;
const segments = [];
for (let i = 0; i < audioBuffer.length; i += samplesPerSegment) {
// 创建音频片段...
segments.push(audioSegment);
}
return segments;
}
// 并发处理片段
async function processSegmentsConcurrently(segments, targetAudioBase64) {
const results = [];
const concurrentLimit = 3; // 并发数
for (let i = 0; i < segments.length; i += concurrentLimit) {
const batch = segments.slice(i, i + concurrentLimit);
const promises = batch.map(segment =>
fetch(`${ISV_SERVER}/api/clone`, {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
target_audio: targetAudioBase64,
source_audio: segment,
tau: 0.3
})
}).then(res => res.json())
);
const batchResults = await Promise.all(promises);
results.push(...batchResults);
// 更新进度
updateProgress(i + batch.length, segments.length);
}
return results;
}
流式处理优势
- 处理长音频:支持处理任意长度的音频
- 容错性:单个片段失败不影响其他片段
- 实时反馈:可以实时看到处理进度
- 并发加速:多个片段可以同时处理