ElevenLabsAI音频生成技能Skill elevenlabs

ElevenLabs AI音频生成技能利用人工智能技术实现文本转语音、音效生成和音乐创作。支持32种语言和100多种声音,可生成自然语音、自定义音效和免版税音乐,适用于视频配音、游戏开发、有声书制作和内容创作等场景。关键词:AI音频生成、文本转语音、音效设计、音乐创作、多语言支持、语音克隆、实时流式音频。

AIGC 0 次安装 0 次浏览 更新于 3/12/2026

名称: elevenlabs 描述: | AI驱动的音频生成,使用ElevenLabs API - 文本转语音具有逼真声音、音效生成和从文本描述创作音乐。生成32种语言的自然语音,为游戏和视频创建自定义音效,并创作免版税音乐曲目。

当用户请求以下内容时使用此技能:

  • 语音生成或文本转语音转换
  • 内容(视频、有声书、播客)的音频旁白
  • 游戏、视频或应用程序的音效
  • 从文本描述生成音乐
  • 多说话者对话或对话音频
  • 语音克隆或自定义语音创建
  • 实时应用程序的音频流

能力:文本转语音(32种语言,100多种声音)、音效生成、音乐创作、语音克隆、实时音频流

Python SDK: elevenlabs (pip install elevenlabs) 允许工具: [“Bash”, “Read”, “Write”, “AskUserQuestion”]

ElevenLabs 音频生成

目的

此技能通过ElevenLabs API启用AI驱动的音频生成。以32种语言创建逼真文本转语音,为游戏和视频生成自定义音效,并从文本描述创作免版税音乐。支持100多种专业声音、自定义语音克隆、实时流和多说话者对话。

何时使用

当用户要求以下内容时应调用此技能:

  • 从文本生成语音(“将此转换为语音”、“创建音频旁白…”)
  • 为视频、演示或内容创建配音
  • 以特定声音或语言生成音频
  • 创建音效(“生成脚步声”、“创建爆炸音频…”)
  • 从描述创作音乐(“生成欢快的背景音乐…”)
  • 构建多说话者对话或对话
  • 从音频样本克隆语音
  • 在实时应用程序中流式传输音频
  • 创建有声书、播客或音频内容

可用能力

1. 文本转语音(语音生成)

模型:

  • Eleven Multilingual v2 (eleven_multilingual_v2) - 最高质量,29种语言
  • Eleven Flash v2.5 (eleven_flash_v2_5) - 超低75毫秒延迟,32种语言,便宜50%
  • Eleven Turbo v2.5 (eleven_turbo_v2_5) - 平衡质量和延迟

特性:

  • 100多种预置专业声音
  • 从音频样本自定义语音克隆
  • 多说话者对话生成
  • 实时音频流
  • 支持32种语言
  • 情感和自然语调
  • 语音设置定制(稳定性、相似性、风格)

输出格式:

  • MP3(各种比特率:32kbps至192kbps)
  • PCM(8kHz至48kHz)
  • Opus, µ-law, A-law

2. 音效生成

模型:

  • Eleven Text-to-Sound v2 (eleven_text_to_sound_v2)

特性:

  • 从文本描述生成音效
  • 可定制持续时间
  • 支持循环以无缝音频
  • 提示影响控制
  • 高质量音频用于游戏、视频、UI/UX

使用案例:

  • 游戏音频(脚步声、爆炸、环境音)
  • 视频制作声音
  • UI/UX声音设计
  • 自然声音(雨、风、海浪)
  • 机械声音(门、引擎、机器)
  • 幻想/科幻效果

3. 音乐生成

特性:

  • 文本转音乐创作
  • 声乐和器乐轨道
  • 多种流派和风格
  • 可定制轨道持续时间
  • 创作计划(结构化音乐蓝图)
  • 免版税生成音乐

参数:

  • 文本提示描述所需音乐
  • 持续时间控制(毫秒)
  • 流派、风格、情绪规范
  • 部分级别创作控制

要求:

  • 付费ElevenLabs账户(音乐API在免费层不可用)

内容政策:

  • 无版权材料(艺术家名称、乐队名称、商标)
  • 返回受限提示的建议

指令

步骤1:理解请求

分析用户请求以确定:

  • 任务类型:文本转语音、音效或音乐生成
  • 内容:要转换的文本/描述
  • 声音/音效:特定声音、语言或音效特征
  • 格式:输出格式要求(MP3、流式等)
  • 持续时间:长度要求(用于音效或音乐)
  • 使用案例:旁白、视频、游戏、播客等

步骤2:选择适当模型/能力

对于文本转语音:

  • 需要高质量eleven_multilingual_v2
  • 低延迟/实时eleven_flash_v2_5
  • 平衡eleven_turbo_v2_5

对于音效:

  • 使用 eleven_text_to_sound_v2 模型
  • 考虑持续时间和循环需求

对于音乐:

  • 确保用户有付费账户
  • 确定轨道长度和风格

步骤3:设置API认证

import os
from elevenlabs.client import ElevenLabs

# 使用API密钥初始化客户端
client = ElevenLabs(api_key=os.environ.get("ELEVENLABS_API_KEY"))

API密钥应设置为环境变量:

export ELEVENLABS_API_KEY="your-api-key-here"

步骤4:根据任务类型实施

文本转语音实施

基本语音生成:

from elevenlabs.client import ElevenLabs
from pathlib import Path

client = ElevenLabs(api_key=os.environ["ELEVENLABS_API_KEY"])

# 生成语音
audio = client.text_to_speech.convert(
    text="您的文本内容在此",
    voice_id="JBFqnCBsd6RMkjVDRZzb",  # 默认声音(George)
    model_id="eleven_multilingual_v2",
    output_format="mp3_44100_128"
)

# 保存到文件
output_path = Path("speech_output.mp3")
with output_path.open("wb") as f:
    for chunk in audio:
        f.write(chunk)

print(f"音频保存到: {output_path}")

流式语音(实时):

from elevenlabs.client import ElevenLabs
from elevenlabs import stream

client = ElevenLabs(api_key=os.environ["ELEVENLABS_API_KEY"])

# 实时流式传输音频
audio_stream = client.text_to_speech.convert_as_stream(
    text="这将随着生成而流式传输",
    voice_id="JBFqnCBsd6RMkjVDRZzb",
    model_id="eleven_flash_v2_5",  # 用于流式的低延迟模型
    output_format="mp3_44100_128"
)

# 流式传输到扬声器
stream(audio_stream)

多说话者对话:

# 用多种声音生成对话
speakers = [
    {
        "voice_id": "JBFqnCBsd6RMkjVDRZzb",  # 说话者1
        "text": "你好,今天怎么样?"
    },
    {
        "voice_id": "21m00Tcm4TlvDq8ikWAM",  # 说话者2(Rachel)
        "text": "我很好,谢谢询问!"
    }
]

# 生成每个说话者的音频并合并
from pydub import AudioSegment
combined = AudioSegment.empty()

for speaker in speakers:
    audio = client.text_to_speech.convert(
        text=speaker["text"],
        voice_id=speaker["voice_id"],
        model_id="eleven_multilingual_v2"
    )

    # 保存临时文件
    temp_path = Path(f"temp_{speaker['voice_id']}.mp3")
    with temp_path.open("wb") as f:
        for chunk in audio:
            f.write(chunk)

    # 添加到合并音频
    segment = AudioSegment.from_mp3(str(temp_path))
    combined += segment
    temp_path.unlink()  # 清理

# 导出最终对话
combined.export("dialogue.mp3", format="mp3")

列出可用声音:

# 获取所有可用声音
voices = client.voices.get_all()

print("可用声音:")
for voice in voices.voices:
    print(f"- {voice.name} (ID: {voice.voice_id})")
    print(f"  标签: {voice.labels}")
    print(f"  描述: {voice.description}")

常见声音ID:

  • JBFqnCBsd6RMkjVDRZzb - George(男性,英语,中年)
  • 21m00Tcm4TlvDq8ikWAM - Rachel(女性,英语,年轻)
  • AZnzlk1XvdvUeBnXmlld - Domi(女性,英语,年轻)
  • EXAVITQu4vr4xnSDxMaL - Bella(女性,英语,年轻)
  • ErXwobaYiN019PkySvjV - Antoni(男性,英语,年轻)
  • MF3mGyEYCl7XYWbV9V6O - Elli(女性,英语,年轻)
  • TxGEqnHWrfWFTfGW9XjX - Josh(男性,英语,年轻)

音效实施

基本音效生成:

from elevenlabs.client import ElevenLabs
from pathlib import Path

client = ElevenLabs(api_key=os.environ["ELEVENLABS_API_KEY"])

# 生成音效
audio = client.text_to_sound_effects.convert(
    text="木地板上的脚步声,慢速行走",
    duration_seconds=5.0,
    prompt_influence=0.5  # 如何紧密遵循提示(0.0-1.0)
)

# 保存到文件
output_path = Path("footsteps.mp3")
with output_path.open("wb") as f:
    for chunk in audio:
        f.write(chunk)

print(f"音效保存到: {output_path}")

循环音效:

# 生成无缝循环音频
audio = client.text_to_sound_effects.convert(
    text="轻柔的雨落在树叶上,环境自然声音",
    duration_seconds=10.0,
    prompt_influence=0.5
    # 注意:循环参数可能在较新API版本中可用
)

output_path = Path("rain_loop.mp3")
with output_path.open("wb") as f:
    for chunk in audio:
        f.write(chunk)

多音效:

# 为游戏生成各种音效
sound_effects = [
    {
        "name": "explosion",
        "description": "大爆炸,碎片落下,动作电影风格",
        "duration": 3.0
    },
    {
        "name": "door_open",
        "description": "吱吱作响的木门缓慢打开,恐怖氛围",
        "duration": 2.0
    },
    {
        "name": "ui_click",
        "description": "轻柔按钮点击,UI反馈声音,愉快音调",
        "duration": 0.5
    }
]

for sfx in sound_effects:
    audio = client.text_to_sound_effects.convert(
        text=sfx["description"],
        duration_seconds=sfx["duration"]
    )

    output_path = Path(f"{sfx['name']}.mp3")
    with output_path.open("wb") as f:
        for chunk in audio:
            f.write(chunk)

    print(f"生成: {output_path}")

音乐生成实施

基本音乐创作:

from elevenlabs.client import ElevenLabs
from pathlib import Path

client = ElevenLabs(api_key=os.environ["ELEVENLABS_API_KEY"])

# 从提示生成音乐
prompt = """欢快的独立流行歌曲,有原声吉他、轻鼓和欢快
旋律。现代和充满活力的感觉,完美适合生活方式视频的背景音乐。
仅器乐,无声乐。"""

try:
    audio = client.music_generation.compose(
        prompt=prompt,
        music_length_ms=30000  # 30秒
    )

    # 保存音乐文件
    output_path = Path("background_music.mp3")
    with output_path.open("wb") as f:
        for chunk in audio:
            f.write(chunk)

    print(f"音乐保存到: {output_path}")

except Exception as e:
    if "paid" in str(e).lower() or "subscription" in str(e).lower():
        print("错误:音乐生成需要付费ElevenLabs账户")
    else:
        print(f"错误: {e}")

带创作计划的音乐:

# 首先创建结构化创作计划
composition_plan = client.music_generation.composition_plan.create(
    prompt="""电子舞曲轨道,有充满活力的渐强、高潮部分和
    chill结尾。渐进浩室风格。""",
    music_length_ms=60000  # 60秒
)

# 从计划生成音乐(允许更多控制)
audio = client.music_generation.compose(
    composition_plan=composition_plan
)

output_path = Path("edm_track.mp3")
with output_path.open("wb") as f:
    for chunk in audio:
        f.write(chunk)

流派特定音乐:

# 为不同流派/情绪生成音乐
music_prompts = {
    "cinematic": """史诗电影管弦乐音乐,有戏剧性弦乐、强大
    铜管和英雄主题。完美适合电影预告片,鼓舞人心和宏伟。""",

    "lo-fi": """轻松lo-fi嘻哈节拍,有爵士钢琴、乙烯基噼啪声和柔和
    鼓。放松学习音乐氛围,器乐。""",

    "ambient": """环境音景,有以太垫、微妙纹理和和平
    氛围。冥想和镇静,完美适合放松。""",

    "game_menu": """神秘幻想游戏菜单音乐,有竖琴、柔和弦乐和
    魔法氛围。中世纪RPG感觉,循环背景音乐。"""
}

for name, prompt in music_prompts.items():
    try:
        audio = client.music_generation.compose(
            prompt=prompt,
            music_length_ms=20000  # 20秒
        )

        output_path = Path(f"music_{name}.mp3")
        with output_path.open("wb") as f:
            for chunk in audio:
                f.write(chunk)

        print(f"生成: {output_path}")

    except Exception as e:
        print(f"生成{name}错误: {e}")

步骤5:处理输出和错误

保存音频文件:

from pathlib import Path

def save_audio(audio_generator, filename):
    """将音频生成器保存到文件"""
    output_path = Path(filename)

    with output_path.open("wb") as f:
        for chunk in audio_generator:
            f.write(chunk)

    print(f"保存: {output_path.absolute()}")
    return output_path

错误处理:

import os
from elevenlabs.client import ElevenLabs

def check_api_key():
    """验证API密钥是否设置"""
    if not os.environ.get("ELEVENLABS_API_KEY"):
        raise ValueError(
            "ELEVENLABS_API_KEY未设置。 "
            "请设置环境变量: export ELEVENLABS_API_KEY='your-key'"
        )

def handle_elevenlabs_request(func, *args, **kwargs):
    """错误处理包装器"""
    try:
        return func(*args, **kwargs)

    except Exception as e:
        error_msg = str(e).lower()

        if "api key" in error_msg or "authentication" in error_msg:
            print("错误:无效或缺失API密钥")
            print("设置您的API密钥: export ELEVENLABS_API_KEY='your-key'")

        elif "quota" in error_msg or "limit" in error_msg:
            print("错误:API配额超出")
            print("检查您的使用情况: https://elevenlabs.io/app/usage")

        elif "paid" in error_msg or "subscription" in error_msg:
            print("错误:此功能需要付费订阅")

        elif "bad_prompt" in error_msg:
            print("错误:提示包含受限内容")
            print("避免版权材料(艺术家名称、品牌)")

        else:
            print(f"错误: {e}")

        raise

步骤6:向用户提供输出

  1. 报告生成的内容
  2. 显示文件路径 音频保存位置
  3. 提供播放选项 如果适用
  4. 提供改进建议 (不同声音、更长持续时间等)
  5. 显示元数据 (持续时间、格式、使用模型)

要求

API密钥:

Python包:

pip install elevenlabs pydub python-dotenv

系统:

  • Python 3.8+
  • 互联网连接用于API访问
  • 音频播放库(可选,用于播放生成音频)
  • ffmpeg(pydub用于音频处理所需)

账户要求:

  • 免费层:文本转语音和音效
  • 付费层:音乐生成,更高配额

最佳实践

文本转语音

  1. 选择适当模型:

    • 高质量旁白 → eleven_multilingual_v2
    • 实时/流式 → eleven_flash_v2_5
    • 平衡使用案例 → eleven_turbo_v2_5
  2. 选择正确声音:

    • 匹配声音到内容(年龄、性别、口音)
    • 使用 voices.get_all() 探索选项
    • 考虑声音标签和描述
  3. 优化使用案例:

    • 长内容:使用标准转换,非流式
    • 实时应用程序:使用Flash模型与流式
    • 对话:每个说话者生成单独音频
  4. 格式选择:

    • 网页/移动:MP3(好质量,小尺寸)
    • 高质量:使用较高比特率(128kbps+)
    • 电话系统:µ-law 或 A-law 格式

音效生成

  1. 描述性:

    • 包括上下文:“砾石上的脚步声,慢行速度”
    • 指定情绪:“吱吱作响的门,恐怖氛围”
    • 添加技术细节:“深低音爆炸,动作电影”
  2. 持续时间控制:

    • 短声音:0.5-2秒(UI点击、冲击)
    • 中声音:2-5秒(脚步声、门)
    • 环境循环:5-10+秒(雨、风、环境)
  3. 提示影响:

    • 高(0.7-1.0):紧密遵循提示,更字面
    • 中(0.4-0.6):平衡创造性和遵循
    • 低(0.0-0.3):更多创意解释
  4. 迭代:

    • 生成多个变体
    • 根据结果调整描述
    • 如果需要组合多种效果

音乐生成

  1. 详细提示:

    • 指定流派、乐器、情绪、节奏
    • 提及结构(前奏、渐强、高潮、结尾)
    • 包括使用案例上下文(游戏菜单、视频背景)
  2. 避免版权引用:

    • 不要提及艺术家名称、乐队名称、歌曲
    • 使用通用风格描述代替
    • 专注于特征,非示例
  3. 持续时间规划:

    • 短剪辑:10-30秒(循环、背景)
    • 完整轨道:60-120秒(完整歌曲)
    • 考虑导出时间(更长=更多处理)
  4. 创作计划:

    • 用于复杂多部分轨道
    • 更好控制结构
    • 允许部分级别定制

通用最佳实践

  1. API密钥安全:

    • 存储在环境变量中,切勿在代码中
    • 本地开发使用 .env 文件
    • 定期轮换密钥
  2. 错误处理:

    • 始终在try/except中包装API调用
    • 检查配额限制
    • 提供有用的错误消息
  3. 成本优化:

    • 当质量差异最小化时使用Flash模型
    • 尽可能缓存/重用生成音频
    • 通过仪表板监控使用情况
  4. 文件管理:

    • 使用描述性文件名
    • 按类型组织(语音、音效、音乐)
    • 清理临时文件
  5. 测试:

    • 先用短持续时间测试
    • 在长生成前验证输出质量
    • 检查不同声音/设置

示例

示例1:有声书旁白

用户请求: “将此章节转换为有声书格式”

预期行为:

  1. 选择适当声音(例如,叙事声音如George)
  2. 使用高质量模型 (eleven_multilingual_v2)
  3. 从章节文本生成语音
  4. 以高比特率保存为MP3
  5. 报告持续时间和文件位置
audio = client.text_to_speech.convert(
    text=chapter_text,
    voice_id="JBFqnCBsd6RMkjVDRZzb",  # George
    model_id="eleven_multilingual_v2",
    output_format="mp3_44100_128"
)
save_audio(audio, "chapter_1.mp3")

示例2:视频游戏音效

用户请求: “为奇幻RPG游戏生成音效”

预期行为:

  1. 创建多音效带描述
  2. 为每个设置适当持续时间
  3. 以描述性名称保存
  4. 组织在游戏音频文件夹中
sfx_list = [
    ("sword_swing", "剑划破空气,奇幻战斗", 1.0),
    ("potion_drink", "饮用魔法药水,吞咽声,RPG游戏", 0.8),
    ("spell_cast", "魔法咒语施放,以太般呼啸声,奇幻魔法", 1.5),
    ("footsteps_stone", "石地牢地板上的脚步声,回声", 2.0)
]

for name, description, duration in sfx_list:
    audio = client.text_to_sound_effects.convert(
        text=description,
        duration_seconds=duration
    )
    save_audio(audio, f"sfx_{name}.mp3")

示例3:播客前奏带音乐

用户请求: “创建带语音和背景音乐的播客前奏”

预期行为:

  1. 生成前奏语音
  2. 生成背景音乐
  3. 注意混音需要外部工具(pydub)
  4. 提供两个音频文件
# 生成前奏语音
intro_text = "欢迎来到Tech Talk播客,我们讨论技术和创新的最新内容。"
speech = client.text_to_speech.convert(
    text=intro_text,
    voice_id="TxGEqnHWrfWFTfGW9XjX",  # Josh(充满活力)
    model_id="eleven_flash_v2_5"
)
save_audio(speech, "podcast_intro_voice.mp3")

# 生成背景音乐(需要付费账户)
music = client.music_generation.compose(
    prompt="欢快的科技播客前奏音乐,电子节拍,现代和充满活力",
    music_length_ms=10000  # 10秒
)
save_audio(music, "podcast_intro_music.mp3")

print("使用音频编辑软件混合语音和音乐")

示例4:多语言内容

用户请求: “创建英语、西班牙语和法语的欢迎消息”

预期行为:

  1. 每种语言生成语音
  2. 使用多语言模型
  3. 为每种语言选择适当声音
  4. 以语言特定文件名保存
messages = {
    "english": ("Hello and welcome!", "JBFqnCBsd6RMkjVDRZzb"),
    "spanish": ("¡Hola y bienvenido!", "ThT5KcBeYPX3keUQqHPh"),  # 西班牙声音
    "french": ("Bonjour et bienvenue!", "XB0fDUnXU5powFXDhCwa")   # 法语声音
}

for lang, (text, voice_id) in messages.items():
    audio = client.text_to_speech.convert(
        text=text,
        voice_id=voice_id,
        model_id="eleven_multilingual_v2"
    )
    save_audio(audio, f"welcome_{lang}.mp3")

示例5:实时语音流

用户请求: “将此新闻文章流式传输为音频”

预期行为:

  1. 使用Flash模型以低延迟
  2. 流式传输音频随生成
  3. 提供实时播放或增量保存
from elevenlabs import stream

audio_stream = client.text_to_speech.convert_as_stream(
    text=news_article_text,
    voice_id="21m00Tcm4TlvDq8ikWAM",  # Rachel
    model_id="eleven_flash_v2_5",
    output_format="mp3_44100_128"
)

# 实时流式传输到扬声器
stream(audio_stream)

限制

  1. 音乐生成:

    • 需要付费订阅
    • 不允许版权材料
    • 处理时间随持续时间增加
  2. API配额:

    • 每月字符限制(层依赖)
    • 请求速率限制
    • 免费与付费层不同限制
  3. 语音克隆:

    • 未在Tier 1实施中涵盖
    • 需要语音样本和额外设置
  4. 音频质量:

    • 输出格式影响质量和文件大小
    • 更高质量格式可能需要付费层
    • 流式传输质量略低于标准
  5. 语言支持:

    • 支持32种语言但质量各异
    • 某些声音是语言特定
    • 推荐多语言模型用于非英语
  6. 音效:

    • 限于基于描述的生成
    • 无法通过API编辑生成效果
    • 持续时间限制(通常低于22秒)
  7. 内容政策:

    • 无有害或版权内容
    • 音乐生成拒绝艺术家/乐队名称
    • 所有端点的严格内容审核

相关技能

  • image-generation - 用于视觉内容创作
  • python-plotting - 用于可视化音频数据
  • scientific-writing - 用于生成旁白文本
  • python-best-practices - 用于编写干净音频处理代码

附加资源