Gradio全解10——Streaming:流式傳輸的音頻應用(7)——ElevenLabs:高級智能語音技術
- 10.7 ElevenLabs:高級智能語音技術
- 10.7.1 核心功能與可用模型
- 1. 核心功能與產品
- 2. 三類語音模型
- 10.7.2 文本轉語音API
- 1. 完整操作步驟
- 2. Stream處理方式:流式播放或手動處理
- 10.7.3 語音轉文本API
- 10.7.4 音樂API
- 1. Eleven Music生成音樂音軌
- 2. 生成作曲方案并轉為音頻
本章目錄如下:
- 《Gradio全解10——Streaming:流式傳輸的音頻應用(1)——自動語音識別技術(ASR)》
- 《Gradio全解10——Streaming:流式傳輸的音頻應用(2)——使用本地部署的Mini-Omni模型構建對話式聊天機器人》
- 《Gradio全解10——Streaming:流式傳輸的音頻應用(3)——HF Inference:在推理客戶端運行推理服務》
- 《Gradio全解10——Streaming:流式傳輸的音頻應用(4)——Spaces ZeroGPU:為Spaces提供動態GPU分配方案》
- 《Gradio全解10——Streaming:流式傳輸的音頻應用(5)——Mistral-7B實現流式傳輸音頻:魔力8號球》
- 《Gradio全解10——Streaming:流式傳輸的音頻應用(6)——基于Groq的帶自動語音檢測功能的Gradio應用》
- 《Gradio全解10——Streaming:流式傳輸的音頻應用(7)——ElevenLabs:高級智能語音技術》
10.7 ElevenLabs:高級智能語音技術
本節引入ElevenLabs智能語音技術,作為更專業的語音、音頻和音樂工具,后邊視頻應用中將用到它。它不僅能無縫替換之前的語音轉換工具,還能實現更豐富復雜的語音功能;它不僅能拓展開發者的工具庫,還能產生更逼真的語音甚至優美的音樂。
本節內容包括ElevenLabs的核心功能與產品講解,其旗下Eleven系列語音大模型的介紹,以及文本轉語音API、語音轉文本API及音樂API的使用。更多ElevenLabs內容請參閱:🖇?鏈接10-39。
10.7.1 核心功能與可用模型
ElevenLabs是一家專注于人工智能語音技術的公司,提供先進的文本轉語音和語音克隆(Voice Cloning)功能和眾多語音產品,同時提供三類語音模型,下邊逐一介紹。
1. 核心功能與產品
ElevenLabs AI模型能夠生成高度自然、富有表現力的人聲,適用于有聲書、視頻配音、虛擬助手、游戲角色對話等場景。ElevenLabs的核心功能包括:
- ①文本轉語音(TTS),支持多種語言和聲音風格(如自然、激昂、柔和等),可調節語速、語調、停頓等參數。
- ②語音克隆(Voice Cloning),上傳少量樣本音頻即可克隆特定人聲(需遵守倫理政策)。
- ③多語言支持(Multi-Language),包括英語、中文、西班牙語、法語、德語等20+語言。
- ④實時語音生成(Streaming),低延遲,適合交互式應用(如聊天機器人)。
實現相關功能的ElevenLabs產品眾多,包括涵蓋了從帳戶創建到高級語音克隆、語音合成技術、配音和專家配音的所有內容。大致分類如下:
- 游樂場(Playground):Text to Speech、Speech To Text to、Voice Changer、Sound Effects等。
- 產品(Product):Studio、Music、Dubbing Studio、Transcripts、Subtitles等。
- 語音(Voice):Voice cloning、Voice library、Voice design、Payouts等。
- 音頻工具(Audio Tool):Audio Native、Voiceover Studio、Voice Isolator、AI speech Classifier。
- 管理(Administration):Account、Consolidated Billing、Data Residency、Usage Analytics、Workspaces、Webhooks等。
還有用于部署定制的對話式語音代理的平臺Conversational AI。更多關于ElevenLabs產品的信息請參閱:PRODUCT GUIDES🖇?鏈接10-40。
2. 三類語音模型
ElevenLabs的可用模型包括三類Text to Speech、Speech to Text和Music。
其中Text to Speech類模型典型代表有:
- Eleven v3(alpha):最新且最先進的語音合成模型,能生成自然逼真的語音,具有豐富的情感表現力,并支持跨70多種語言的上下文理解,適用于角色對話、有聲書制作和情感化對話。
- Eleven Multilingual v2(eleven_multilingual_v2):在穩定性、語言多樣性和口音準確性方面表現卓越,支持29種語言,推薦作為多數場景的首選方案。
- Eleven Flash v2.5(eleven_flash_v2_5):超低延遲,支持32種語言,響應速度更快,字符單價降低50%。
- Eleven Turbo v2.5 (eleven_turbo_v2_5):質量與延遲的最佳平衡,特別適合對實時性要求高的開發場景,支持32種語言。
Speech to Text類模型有:
- Scribe v1(scribe_v1):先進的語音識別模型,提供帶詞級時間戳的精準轉錄、多說話人音頻的說話人分離技術、增強上下文理解的動態音頻標記等高級功能,支持99種語言。適用于轉錄服務、會議記錄、內容分析和多語言識別。
Music類模型有:
- Eleven Music(music_v1):是一款文本生成音樂模型,可通過自然語言提示詞生成任意風格的專業級音樂。該模型能理解創作意圖,并根據目標生成具有上下文感知的完整音頻。支持自然語言與專業音樂術語輸入,提供以下尖端特性:①對流派、風格與結構的完整控制。②人聲演唱或純樂器演奏版本。③多語言支持(包括英語、西班牙語、德語、日語等)。④可編輯整曲或特定段落的音效與歌詞。
此外,還有人性化、富有表現力的語音設計模型eleven_ttv_v3(Text to Voice),最先進的多語言語音轉換器模型eleven_multilingual_sts_v2(Speech to Speech),僅限英語的語音轉換模型eleven_english_sts_v2,以及具有實驗功能并減少沉默時幻覺的scribe_v1_experimental,請根據需要選擇。更多Eleven系列大模型信息請參考:🖇?鏈接10-41。
10.7.2 文本轉語音API
ElevenLabs API提供簡潔接口,可訪問最先進的音頻模型與功能。從低延遲會話代理到用于配音和有聲讀物的領先AI語音生成器,它只需幾行代碼,就能為創作者和開發人員帶來最引人注目、最豐富、最逼真的聲音。下面分別以使用文本轉語音API、語音轉文本API及音樂API為例講解ElevenLabs API用法,首先從文本轉語音API開始。
1. 完整操作步驟
本節以Python為例,講述使用文本轉語音API的完整操作步驟:
第一步,在控制面板創建API密鑰:ELEVENLABS_API_KEY🖇?鏈接10-42。該密鑰將用于安全訪問API服務并控制信用額度使用。建議將密鑰存儲為托管密鑰,并通過.env文件或應用配置傳入SDK:
ELEVENLABS_API_KEY=<your_api_key_here>
第二步,安裝SDK。除了elevenlabs,還將使用dotenv庫從環境變量加載API密鑰,安裝命令如下所示:
pip install elevenlabs python-dotenv
若需通過揚聲器播放音頻,系統可能會提示安裝MPV(🖇?鏈接10-43)或ffmpeg。
第三步,發起首個請求,代碼如下所示:
from dotenv import load_dotenv
from elevenlabs.client import ElevenLabs
from elevenlabs import play
import os
load_dotenv()
client = ElevenLabs(api_key=os.getenv("ELEVENLABS_API_KEY"),
)
audio = client.text_to_speech.convert(text="The first move is what sets everything in motion.",voice_id="JBFqnCBsd6RMkjVDRZzb",model_id="eleven_multilingual_v2",output_format="mp3_44100_128",
)
play(audio)
運行代碼后,可從揚聲器聽到轉換后的音頻。通過方法client.voices.search()
列出所有符合條件的聲音,或通過調用client.voices.settings.get("your-voice-id")
獲取voice_id對應語音的設置。使用自定義設置可以構建個性化語音,有關輸出的語音結構信息及更多功能函數示例,請參閱:List voices🖇?鏈接10-44。
另外可以訪問ElevenLabs語音實驗室🖇?鏈接10-45,嘗試不同的語音、語言和音頻設置。
2. Stream處理方式:流式播放或手動處理
ElevenLabs API支持特定端點的實時音頻流式傳輸。通過HTTP分塊(Chunk)傳輸編碼直接返回原始音頻字節(如MP3數據),使得客戶端能夠在音頻生成時逐步處理或播放,官方Python庫和Node庫均包含簡化處理連續音頻流的實用工具。
文本轉語音API、語音轉換(Voice Changer)API及音頻分離(Audio Isolation)API等均支持流式傳輸。以Python為例,文本轉語音API請求的音頻流有兩種處理方式:流式播放或手動處理音頻字節,對應代碼如下所示:
from elevenlabs import stream
from elevenlabs.client import ElevenLabs
client = ElevenLabs()
audio_stream = client.text_to_speech.stream(text="This is a test",voice_id="JBFqnCBsd6RMkjVDRZzb",model_id="eleven_multilingual_v2"
)
# option 1: play the streamed audio locally
stream(audio_stream)
# option 2: process the audio bytes manually
for chunk in audio_stream:if isinstance(chunk, bytes):print(chunk)
10.7.3 語音轉文本API
本節將展示如何使用語音轉文本API將語音音頻轉換為文本。代碼如下所示:
import requests
from elevenlabs.client import ElevenLabs
client = ElevenLabs()
audio_url = ("https://storage.googleapis.com/eleven-public-cdn/audio/marketing/nicole.mp3"
)
response = requests.get(audio_url)
audio_data = BytesIO(response.content)transcription = client.speech_to_text.convert(file=audio_data,model_id="scribe_v1", # Model to use, for now only "scribe_v1" is supportedtag_audio_events=True, # Tag audio events like laughter, applause, etc.language_code="eng", # Language of the audio file. If set to None, the model will detect the language automatically.diarize=True, # Whether to annotate who is speaking
)
print(transcription)
應該可以看到打印到控制臺的音頻文件的轉錄內容。
10.7.4 音樂API
本節學習使用模型Eleven Music生成音樂,目前僅支持付費用戶。
1. Eleven Music生成音樂音軌
下面代碼將展示如何使用模型Eleven Music生成音樂的音軌并播放:
from elevenlabs.client import ElevenLabs
from elevenlabs import play
elevenlabs = ElevenLabs()
track = elevenlabs.music.compose(prompt="Create an intense, fast-paced electronic track for a high-adrenaline video game scene. Use driving synth arpeggios, punchy drums, distorted bass, glitch effects, and aggressive rhythmic textures. The tempo should be fast, 130–150 bpm, with rising tension, quick transitions, and dynamic energy bursts.",music_length_ms=10000)
play(track)
2. 生成作曲方案并轉為音頻
作曲方案是JSON形式的音樂生成描述框架,可通過更精細的參數控制生成指定音樂,隨后可配合Eleven Music實現音樂生成。
我們即可直接生成音樂,也可選擇作曲方案簡介生成。但通過作曲方案,可以對每個生成段落進行更細粒度控制,實現復雜音樂結構的創作。生成作曲方案代碼如下所示:
from elevenlabs.client import ElevenLabs
from elevenlabs import play
elevenlabs = ElevenLabs()
composition_plan = elevenlabs.music.composition_plan.create(prompt="Create an intense, fast-paced electronic track for a high-adrenaline video game scene. Use driving synth arpeggios, punchy drums, distorted bass, glitch effects, and aggressive rhythmic textures. The tempo should be fast, 130–150 bpm, with rising tension, quick transitions, and dynamic energy bursts.",music_length_ms=10000)
print(composition_plan)
上述操作將生成類似以下結構的作曲方案:
{"positiveGlobalStyles": ["electronic","fast-paced","driving synth arpeggios","punchy drums","distorted bass","glitch effects","aggressive rhythmic textures","high adrenaline"],"negativeGlobalStyles": ["acoustic", "slow", "minimalist", "ambient", "lo-fi"],"sections": [{"sectionName": "Intro","positiveLocalStyles": ["rising synth arpeggio","glitch fx","filtered noise sweep","soft punchy kick building tension"],"negativeLocalStyles": ["soft pads", "melodic vocals", "ambient textures"],"durationMs": 3000,"lines": []},...]
}
使用作曲方案。通過將作曲方案傳遞至compose方法進行作曲,可生成該作曲方案的音頻,代碼如下所示:
composition = elevenlabs.music.compose(composition_plan=composition_plan,
)
play(composition)
更多詳情請參閱Github倉庫:elevenlabs/levenlabs-python🖇?鏈接10-46。