哪個是人類?

先來個小測驗。

下面兩段音檔,分別是一段真人親口說的聲音,另一段是 AI 生成的聲音。你分得出哪個是真的嗎?
(如果出現 403 錯誤,請試著用無痕視窗播放。)

音檔 A

音檔 B

答案在這裡:正解是 B,B 才是本人。

A 是用一個叫做 VoiceStudio 的應用程式,搭配 VoxCPM2 這個模型做出來的聲音複製。參考素材只有一段約 15 秒、請本人朗讀另一段文字的錄音而已。沒有使用雲端語音合成服務,而是在手邊的 Mac 上直接生成(模型事先已下載完成)。

怎麼樣?仔細比對的話或許能聽出來,但如果只是隨便一聽,應該很難分辨吧。

聲音錄音與複製聲音的公開,已取得本人同意。

做了什麼

VoiceStudio 是一款可在本機電腦上運作的語音 AI 桌面應用程式。它可以在不需要雲端、也不需要 API 金鑰的情況下,進行聲音複製與影片配音。它的特色之一是可以切換不同的語音生成模型,這次使用了以下兩個:

模型這次的用途VoxCPM2測驗音檔,以及「戰戰兢兢」「焦急」的比較。可以用文字指示說話方式OmniVoiceVoiceStudio 的預設模型。只用來比較平常的說話方式(不支援情緒指示)這次請公司內部成員協助,做了以下幾件事:

  1. 以約 15 秒的錄音作為範本,複製出本人聲音
  2. 讓複製出的聲音朗讀電話用的文章
  3. 也請本人朗讀同樣的文章,然後互相比較

另外,也請本人用「戰戰兢兢」「焦急」兩種方式朗讀。對複製聲音也下達了相同意思的指示(「怖がりながら恐る恐る」以及英文的「panicking, rushed, speaking very fast」),看看連情緒也能不能模仿。

朗讀的文章如下:

喔,您好,我是山田。
關於前幾天請您準備的資料,我想在下週開會前先稍微跟您討論一下,所以打電話來。
我之後會再與您聯絡。
先麻煩您了。

結論

  • 如果只是一般說話方式,複製聲音已經非常接近本人。說話速度方面,OmniVoice 幾乎和本人一樣,VoxCPM2 則快了約 10%
  • 當對複製聲音用英文強烈指示「非常快」時,說話速度幾乎和本人「焦急」時一樣。不過,不論用哪種指示,音高都沒有像本人那樣上升
  • 本人在「戰戰兢兢」與「焦急」時,音高會升高,而「焦急」時的說話速度大約是平常的 1.5 倍

作為範本的錄音

複製聲音的範本,只有這一段 15.3 秒的錄音。請本人朗讀的是另一段不同於電話文章的內容,如下:

你好。今天我是為了測試 AI 語音合成,正在朗讀這段文字。用的是平常的聲音,語速稍微慢一點。

範本錄音(公司內部成員的聲音)

結果 1:平常的說話方式

測驗中的兩段音檔,正是這個比較結果(測驗中的 A 是 VoxCPM2 複製聲音)。另外也用 OmniVoice 做了參考,整理成數字如下:

說話速度(假名/秒)音高與本人錄音的相似度本人5.58108Hz—複製聲音(VoxCPM2)6.21105Hz0.809複製聲音(OmniVoice)5.5499Hz0.825(複製聲音各生成 3 次,取中位數。「相似度」是指與本人錄音的聲音接近程度,以 0 到 1 表示,越接近 1 越相似。定義見檢證方法中的「評估」)

  • 音高很接近本人。 本人的 108Hz,VoxCPM2 是 105Hz,OmniVoice 則稍低一些,為 99Hz
  • 相似度為 0.809~0.825。 參考來看,與同一位本人另一段錄音(範本錄音)相比,數值是 0.881,已經相當接近了
  • 說話速度因模型而異。 OmniVoice 幾乎和本人一樣,而 VoxCPM2 則快了約 10%

結果 2:「戰戰兢兢」與「焦急」

以下並列本人以「戰戰兢兢」「焦急」方式朗讀的錄音,以及對複製聲音(VoxCPM2)下達相同意思指示後生成的音檔。

本人・戰戰兢兢

複製聲音・指示「怖がりながら恐る恐る」

本人・焦急

複製聲音・指示「panicking, rushed, speaking very fast」

說話速度(假名/秒)音高與本人相同讀法的相似度本人・平常5.58108Hz—本人・戰戰兢兢6.09138Hz—本人・焦急8.54151Hz—複製聲音・無指示6.21105Hz—複製聲音・「怖がりながら恐る恐る」7.0793Hz0.476複製聲音・「panicking, rushed, speaking very fast」8.4093Hz0.529(複製聲音的數值皆為各生成 3 次的中位數。上方可聽到的音檔,是三次中的其中一個。選哪一個,寫在最後的「關於公開的音檔」中)

另外,無指示的複製聲音與有指示的複製聲音,在 VoiceStudio 內部的生成方式也不同(詳見檢證方法)。因此,下面所見的差異中,凡是拿有無指示的複製聲音互相比較的部分(速度、音高、相似度),除了指示本身的效果外,也包含了生成方式不同所造成的影響。

  • 本人有明顯變化。 在「戰戰兢兢」時,音高從 108Hz 升到 138Hz;到「焦急」時更升到 151Hz。且「焦急」時的說話速度約為平常的 1.5 倍
  • 速度已接近本人。 當以英文強烈指示「very fast」時,說話速度為 8.40,幾乎和本人「焦急」時的 8.54 相同。若改用日文「焦急感地稍微快一點說」,則只到 7.25
  • 音高並沒有上升。 兩種複製聲音的音高都在 93Hz 左右,反而比本人略低
  • 雖然指示是「戰戰兢兢」,卻反而變快了。 原本期待它會猶豫地慢慢說,結果卻相反
  • 與本人相同讀法的相似度約為 0.50。 相較於平常說話方式的 0.81,下降很多

補充:就算是本人,相似度也會下降

有趣的是,即使是同一個人的錄音,只要朗讀方式不同,「相似度」也會明顯下降。

比較項目相似度範本錄音 與 本人・平常0.881範本錄音 與 本人・焦急0.629範本錄音 與 本人・戰戰兢兢0.600即使是同一個人的聲音,只要情緒加進去,這個數值也會大幅變動。因此,單靠「相似度」很難判斷情緒是否被成功重現。結果 2 中約 0.50 的數字,與其說是「聲音變成別人了」,不如說是「朗讀方式不同」所造成的影響更大。

總結

  • 如果只是平常說話方式,只要拿約 15 秒的錄音當範本,就能做出相當接近本人的複製聲音
  • 透過指示可以讓說話速度接近本人,但音高無法上升,也沒辦法讓它真的慢下來

複製聲音本身已經做得相當像本人了。不過,要靠文字指示來改變情緒,似乎還需要再下一些工夫。

驗證方法

環境

項目內容機器Mac(Apple M4、記憶體 16GB)VoiceStudiov0.5.7(main 28bf2c7a),從原始碼啟動實施日2026-10-27~28模型VoxCPM2(無指示・有指示)、OmniVoice(僅無指示)生成各條件各用 seed 0・1・2 生成 3 次### 生成

將同一段範本錄音傳給 VoiceStudio 後端的 /generate,透過更改引擎(engine)、指示(instruct)與 seed(seed)來生成(埠號為驗證環境中的設定)。其中,「戰戰兢兢」維持日文原文,「焦急」則使用英文的「panicking, rushed, speaking very fast」。對指示的遵循強度(guidance_scale)為預設的 2.0。

curl -X POST http://localhost:3900/generate \
  -F engine=voxcpm2 \
  -F seed=0 \
  -F "instruct=怖がりながら恐る恐る" \
  -F "text=喔,您好,我是山田。關於前幾天請您準備的資料,我想在下週開會前先稍微跟您討論一下,所以打電話來。我之後會再與您聯絡。先麻煩您了。" \
  -F [email protected] \
  -o out.wav
  • VoxCPM2 只提供範本錄音。不過,VoiceStudio 會在沒有逐字稿時,自動把範本錄音轉成逐字稿再使用。因此,無指示時是以「錄音+逐字稿」作為範本來接續說話;有指示時則是以「錄音+指示」作為範本。無指示與有指示之間的差異,除了指示效果之外,也包含了這種生成方式不同的影響。在與本人錄音比較相似度時,將無指示與有指示的數值並列比較,也會混入這個差異
  • OmniVoice 不支援情緒指示,因此只生成無指示版本。使用了範本錄音與逐字稿

評估

指標方法說話速度將文章轉成假名後的字數 ÷ 聲音從開始到結束的長度(包含中間停頓)音高使用 librosa 的 pyin 求出的音高中位數相似度使用 WavLM-large + ECAPA-TDNN 萃取說話者特徵,並計算餘弦相似度(SIM-o)。模型為 k2-fsa/TTS_eval_models。表中的相似度是在錄音原始狀態下量測的值(尚未裁掉前後空白),即使裁掉空白後重新量測,差異也在 0.015 以內。朗讀確認使用 faster-whisper(large-v3)做逐字稿,再與文章比對

注意事項

  • 只有 1 位說話者,且每個條件的複製聲音僅生成 3 次。數值請當作參考
  • 「相似度」是使用為說話者辨識而訓練的模型(以 WavLM-large 作為特徵抽取器的 ECAPA-TDNN,k2-fsa/TTS_eval_models)所算出的說話者嵌入餘弦相似度(SIM-o)。它不只反映音色,也會反映說話方式;即使是同一位說話者,只要朗讀方式改變,相似度也會從 0.881 降到 0.600(見補充表)。本次沒有進行主觀評分(如 MOS)
  • 也試過其他指示(不過,與無指示版本比較時,仍會包含生成方式不同的影響)。只下「戰戰兢兢」或「焦急」這種單字指示時,說話速度幾乎沒有改變。日文「焦急感地稍微快一點說」的結果是 7.25,還是達不到本人「焦急」時的 8.54。即使寫成英文「very scared, trembling voice, speaking slowly and hesitantly」,也沒有變慢(6.65),音高也沒有上升
  • 當把對指示的遵循強度(guidance_scale)調到 3.0 時,「焦急」會變成 9.68,比本人還快。不過,與範本聲音的相似度會從 0.82 降到 0.78,個人特徵稍微變淡
  • VoxCPM2 的模型卡有提到,說話方式的指示結果每次會有波動,因此建議生成 1 到 3 次。這次每個條件都生成了 3 次
  • 請勿把本文中公開的音檔用於其他語音合成或聲音複製用途
  • 複製他人聲音時,請先取得本人同意

關於公開的音檔- 為了方便比對,無論是本人錄音還是複製聲音,都裁切成從聲音開始前 0.3 秒到結束後 0.4 秒的長度,並統一音量與格式(24kHz、單聲道 mp3)。這是因為本人錄音在開始錄音後到真正開口前,有約 2 秒空白,若不裁切,會變成測驗提示

  • 測驗與「焦急」的複製聲音,使用的是 seed 0 的版本。「焦急」的 seed 0,在三次之中是最慢的一個(說話速度 7.13;表中的 8.40 是三次的中位數)。「戰戰兢兢」則是因為 seed 0 可能沒有讀出開頭的「喔」,所以改用 seed 1。選用的依據不是相似度,而是內容是否完整
  • 複製聲音中有嵌入 VoiceStudio 用來標示 AI 生成的數位浮水印(AudioSeal)。輸出也套用了 VoiceStudio 預設的後處理(如去除靜音、調整音量等)

讀錯字的部分關於複製聲音的逐字稿與原文不一致之處,幾乎都出在開頭的「喔,」上(由於逐字稿 AI 有時會省略句首短詞,所以本文附上的 6 段音檔,已重新只檢查開頭部分,確認「喔」有被辨識出來)。另外,有 1 段把「稍微跟您討論一下」辨識成了「稍微跟您討論一下下」。

授權- VoxCPM2:模型卡標示為 Apache 2.0。VoiceStudio 介面會顯示為「可商用」,但這是根據申報授權做出的顯示,對 VoiceStudio 來說屬於「未確認」的處理

  • OmniVoice:程式碼為 Apache 2.0,訓練完成的權重為 CC-BY-NC(非商用)。使用前需在應用程式內同意授權,本次是以驗證目的同意後使用

參考資料


原文出處:https://qiita.com/nakata-sapeet/items/f883c3cf009785c51bcc


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
boluoji
📝17   💬3   ❤️6
343
🥈
站長阿川
📝5   💬2   ❤️1
212
🥉
mike
1
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
📢 贊助商廣告 · 我要刊登