在現代 AI 技術的推動下,聲音處理領域取得了巨大進展。從語音識別(ASR
)到文字轉語音(TTS
),再到個性化聲音克隆,這些技術已經深入到我們的日常生活中:語音助手、自動字幕生成、語音導航等應用無處不在。
數字音訊
音訊是聲音的“數字化”。聲音本質上是空氣中振動的波,這些波的振動被麥克風捕捉後轉化為電訊號。接著,這些訊號會透過取樣和量化儲存為數字資料。
如上圖所示。聲波最開始是一個連續的模擬訊號,然後經過特定頻率的取樣得到取樣點(比如取樣頻率 48kHz 就是將每秒切割為 48k 個取樣點),再透過量化處理得到二進位制資料(如果量化位數是 16 位,則表示每個取樣點儲存為 16 bit 即 2 個位元組),最後將後設資料(如取樣率、量化位數、聲道數量等)和取樣點二進位制資料組合起來就得到了音訊檔案(比如 WAV 或 MP3)。
ASR 語音識別
語音識別(Automatic Speech Recognition
,ASR
)是將語言轉化為文字的技術。
傳統方法
早期的 ASR
系統主要依賴基於統計的模型,如:
- 聲學模型(Acoustic Model):將音訊訊號轉換為聲學特徵,如 MFCC(梅爾頻率倒譜系數)。
- 語言模型(Language Model):使用統計方法預測文字序列的機率。
- 解碼器(Decoder):結合聲學和語言模型,將聲學特徵對映到最可能的文字序列。
這些方法需要大量手工設計的特徵和規則,效能受限於資料量和語言模型的複雜度。
深度學習
現代 ASR
系統主要基於深度學習,使用端到端(End-to-End)方法,直接從音訊輸入到文字輸出。
如果將 AI 模型看作一個黑盒,那麼訓練過程就是輸入 <音訊, 文字> 資料對,讓模型自動學習輸入和輸出之間的對映關係。經過訓練後,模型便可以對新的音訊進行推理,生成對應文字。
這種描述是一個高度抽象的視角,背後實際上是一個複雜的過程,比如 OpenAI Whisper
:
實踐證明,基於深度學習方法訓練出來的模型具有更好的魯棒性、準確性和泛化能力。
OpenAI Whisper
使用示例:
import whisper
# 載入模型,預設儲存位置 ~/.cache/whisper,可以設定 download_root 改變路徑
model = whisper.load_model("base", download_root="root_dir")
# 將音訊轉換為文字
result = model.transcribe("audio.mp3")
print(result["text"])
你也可以使用 whisper.cpp
,一個使用 C/C++ 編寫的 OpenAI Whisper
的高效能版本。
TTS 文字轉語言
文字轉語音(Text-to-Speech
,TTS
)技術則是將輸入文字轉化為自然流暢的語音。
從某種抽象的角度來看,TTS
(文字轉語音)可以被視為語音識別(ASR
)的“反過程”,兩者都涉及將一種形式的資料(音訊或文字)對映到另一種形式,並且現代都採用深度學習模型,通常基於 Transformer
或類似架構,但在某些技術實現(比如中間表示、損失函式、特徵表示、目標最佳化等)和複雜度上並非完全對稱。
TTS
示例如下(使用的是 HuggingFace
上的 OuteAI/OuteTTS-0.2-500M
模型):
import outetts
model_config = outetts.HFModelConfig_v1(
model_path="OuteAI/OuteTTS-0.2-500M",
language="en", # Supported languages in v0.2: en, zh, ja, ko
)
interface = outetts.InterfaceHF(model_version="0.2", cfg=model_config)
# Optional: Load speaker from default presets
interface.print_default_speakers()
speaker = interface.load_default_speaker(name="male_1")
output = interface.generate(
text="""Speech synthesis is the artificial production of human speech.
A computer system used for this purpose is called a speech synthesizer,
and it can be implemented in software or hardware products.
""",
# Lower temperature values may result in a more stable tone,
# while higher values can introduce varied and expressive speech
temperature=0.1,
repetition_penalty=1.1,
max_length=4096,
speaker=speaker,
)
output.save("output.wav")
聲音克隆
每個人的聲音都有獨特的特性,比如音調高低、響度、停頓、語氣等等,聲音克隆就是分析並提取一個人的聲音特徵,將這些特徵引數化(通常表示為高維向量)。特徵提取本身沒有多大實際用途,為了讓這些特徵發揮作用,聲音克隆通常與 TTS
(文字轉語音)技術結合,融合克隆的聲音特徵,將文字生成為與克隆聲音相似的語音。
不少 TTS
模型也會直接支援聲音克隆的功能,如何呼叫則取決於具體的模型。例如上例中的 OuteAI/OuteTTS-0.2-500M
模型可以輸入一段音訊建立具有該音訊特徵的 speaker:
# Optional: Create a speaker profile (use a 10-15 second audio clip)
speaker = interface.create_speaker(
audio_path="path/to/audio/file",
transcript="Transcription of the audio file."
)
總結
語音技術作為 AI
應用中的重要分支,正在改變人機互動的方式。從基礎的數字音訊處理到 ASR
和 TTS
技術的成熟,再到聲音克隆賦予 AI
個性化表達能力,這些技術不僅滿足了自動化需求,還為虛擬助手、娛樂、醫療、教育等領域帶來了創新可能性。希望本文的介紹能為你開啟探索 AI 聲音領域的大門!
(我是凌虛,關注我,無廣告,專注技術,不煽動情緒,歡迎與我交流)
參考資料:
- https://github.com/openai/whisper
- https://huggingface.co/OuteAI/OuteTTS-0.2-500M