图像与设计
需要把已有录音中的人声换成另一个目标嗓音并保留情绪…
将一段已有录音转换成 ElevenLabs 中已有 voice_id 的目标嗓音,保留原表演的情绪、节奏、语调、呼吸、耳语、笑、哭等,用于改旁白、配音、角色声音或匿名化。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
需要把已有录音中的人声换成另一个目标嗓音特定
解决思路
- 设置环境:需要联网并设置 ELEVENLABS_API_KEY;安装步骤见 references/installation.md;JavaScript 只用 @elevenlabs/* 包。
- Python 快速开始:from elevenlabs import ElevenLabs;client = ElevenLabs();以 rb 打开 source.mp3;调用 client.speech_to_speech.convert(voice_id=JBFqnCBsd6RMkjVDRZzb, audio=audio_file, model_id=eleven_multilingual_sts_v2, output_format=mp3_44100_128);把返回 audio_stream 分块写入 converted.mp3。
- JavaScript 快速开始:从 @elevenlabs/elevenlabs-js 导入 ElevenLabsClient,从 fs 导入 createReadStream/createWriteStream;创建 client;调用 client.speechToSpeech.convert(JBFqnCBsd6RMkjVDRZzb, { audio: createReadStream(source.mp3), modelId: eleven_multilingual_sts_v2, outputFormat: mp3_44100_128 });将 audioStream pipe 到 createWriteStream(converted.mp3)。
- CLI 快速开始:运行 elevenlabs speech-to-speech convert --voice-id JBFqnCBsd6RMkjVDRZzb --audio source.mp3 --model-id eleven_multilingual_sts_v2 --output-format mp3_44100_128 --output converted.mp3。
- 请求限制处理:单请求最长 5 分钟音频,最大 50 MB;超过 5 分钟要分块,切在自然停顿处,逐块转换后拼接;文件超过 50 MB 先压缩为 MP3。
- 计费认知:按处理音频时长计费,1,000 字符每音频分钟,不是按文本字符计费;处理前按音频分钟数预估成本。
- 模型选择:只有 can_do_voice_conversion 属性为 true 的模型可用于此处;推荐 eleven_multilingual_sts_v2,支持 29 种语言,即使英语音频也常优于英语模型;eleven_english_sts_v2 是 API 默认且仅英语后备。
- 低延迟说明:Voice Changer 当前没有低延迟 flash/turbo 层;若需要低延迟,保持 pcm_s16le_16 输入、使用 opus_* 或低比特率 mp3_* 输出,并提高 optimize_streaming_latency。
- 多语言支持:eleven_multilingual_sts_v2 支持 English (US, UK, AU, CA)、Japanese、Chinese、German、Hindi、French (FR, CA)、Korean、Portuguese (BR, PT)、Italian、Spanish (ES, MX)、Indonesian、Dutch、Turkish、Filipino、Polish、Swedish、Bulgarian、Romanian、Arabic (SA, AE)、Czech、Greek、Finnish、Croatian、Malay、Slovak、Danish、Tamil、Ukrainian、Russian。
- 目标语音选择:可使用预置声音、你的克隆声音或声音库中的任意 voice_id。
- 流行预置声音:JBFqnCBsd6RMkjVDRZzb George(男性,叙事);EXAVITQu4vr4xnSDxMaL Sarah(女性,柔和);onwK4e9ZLuTAKqWW03F9 Daniel(男性,权威);XB0fDUnXU5powFXDhCwa Charlotte(女性,对话)。
- 获取所有声音:voices = client.voices.get_all();遍历 voices.voices,打印 voice.voice_id 和 voice.name。
- 从 URL 转换:用 requests.get(audio_url) 下载;用 BytesIO(response.content) 包装;调用 client.speech_to_speech.convert(voice_id=JBFqnCBsd6RMkjVDRZzb, audio=audio_data, model_id=eleven_multilingual_sts_v2, output_format=mp3_44100_128);写入 converted.mp3。
- 参数 voice_id:string,必填,目标声音,使用预置声音 ID、克隆声音或声音库中的声音。
- 参数 audio:file,必填,源音频,其表演(情绪、时间、演绎)会被保留。
- 参数 model_id:string,默认 eleven_english_sts_v2;多语言用 eleven_multilingual_sts_v2,英语专用用 eleven_english_sts_v2。
- 参数 output_format:string,默认 mp3_44100_128;可用格式见输出格式表。
- 参数 voice_settings:JSON string,可选,仅本次请求覆盖已存储声音设置。
- 参数 seed:integer,可选,尽力确定性采样,范围 0–4294967295。
- 参数 remove_background_noise:boolean,默认 false,转换前对输入运行隔离模型。
- 参数 file_format:string,默认 other;other 表示任意编码音频,pcm_s16le_16 表示 16-bit PCM mono @ 16kHz little-endian,延迟更低。
- 参数 optimize_streaming_latency:int 查询参数,可选,0–4,牺牲质量换延迟;4 最快但禁用文本归一化。
- 参数 enable_logging:boolean 查询参数,默认 true;设为 false 启用零保留模式(仅企业,禁用历史和拼接)。
- 覆盖声音设置:调用 convert 时传 voice_settings=VoiceSettings(stability=0.5, similarity_boost=0.75, style=0.0, use_speaker_boost=True),仅对本次请求生效,不改变存储默认值。
- Stability:越低情绪范围越大、越跟随源,越高交付越稳定。
- Similarity boost:越高越接近目标音色,可能放大源音频瑕疵。
- Style:夸张目标声音的独特特征(v2+ 模型)。
- Speaker boost:后处理,锐化目标声音清晰度。
- 清理噪声输入:若源音频有噪声,先用 voice-isolator 预处理,或传 remove_background_noise=True 在单次调用中处理;更干净的输入几乎总会产生更好的转换。
- 低延迟 PCM 输入:如果已有 raw 16-bit PCM mono @ 16kHz,传 file_format=pcm_s16le_16 跳过解码并降低延迟;可配合 optimize_streaming_latency(0–4)查询参数进一步降延迟,但牺牲质量。
- 输出格式:mp3_44100_128 是默认,适合网页/应用;mp3_44100_192 适合更高品质(Creator+);mp3_44100_64 文件更小;mp3_22050_32 最小 MP3;pcm_16000 适合实时管线;pcm_24000 适合流式平衡;pcm_44100(Pro+)CD 质量;pcm_48000(Pro+)最高质量;ulaw_8000 用于 Twilio/电话;alaw_8000 用于电话;opus_48000_64 用于高效流式。
- 确定性输出:传 seed(0–4294967295)使相同输入重复转换尽量返回相同音频,便于测试和 A/B 对比。
- 输入音频要富有表现力:耳语、喊、笑、哭都会被保留;平淡输入得到平淡输出。
- 注意麦克风增益:太安静模型检测不到音素,太响削波会进入转换;目标健康峰值且不削波。
- 口音和节奏转移来自源音频,不是目标声音:如果用美音读、目标英音 George,会得到 George 音色加美音;要配成不同口音或语言,需录目标口音/语言的人再转换为克隆/声音库声音。
- 先清理噪声:传 remove_background_noise=True 或先用 voice-isolator 处理源;噪声在语音转换中比 TTS 影响更大。
- 拆分长录音:超过 5 分钟必须分块;在自然停顿处切,逐块转换,再拼接输出音频。
- 重新配音旁白:保留草稿录音的表演,用 convert 换成不同旁白 voice_id。
- 本地化/配音:用 eleven_multilingual_sts_v2 将配音转换成同一说话人在另一语言的克隆声音。
- 创建角色声音:自己演一句,转换成游戏或动画的独特角色声音。
- 匿名化说话人:用中性预置声音替换可识别声音,同时保留说了什么和怎么说。
- 搭配 voice-isolator:对嘈杂现场录音先隔离源声音,或设置 remove_background_noise=True 再转换。
- 搭配 voice cloning:从短样本克隆目标声音,然后用其 voice_id 作为转换目标。
- 错误处理:用 try/except 包裹 client.speech_to_speech.convert;失败时打印 Voice changer failed: {e}。
- 常见错误:401 无效 API key;422 参数无效(检查 voice_id、model_id 或 file_format 与提供的音频是否匹配);429 超出速率限制。
- 参考:安装指南见 references/installation.md。
适用边界 · 注意事项
- 不要用于从语音样本创建或克隆新声音;那是 voice cloning(IVC/PVC)功能,本技能只把已有录音转换为已有 voice_id。
- 没有 ElevenLabs API key、无法联网或不能使用 ElevenLabs 付费服务时不要使用本技能。
- 源音频超过 5 分钟或 50 MB 且未拆分/压缩时,不要直接单请求处理。