AI 學習紀錄 – SeamlessM4T 語音識別

在前一篇利用 Azure TTS 來進行TTS後, 接著就研究反向的技術, 語音轉文字。微軟當然也有這項 API, 但語音識別有 Facebook 推出的 SeamlessM4T 模型可以做,而且效果也不錯,就使用這個模型來識別就可以了。

Facebook SeamlessM4T

Facebook SeamlessM4T 其實包含好了幾種技術

  • S2ST: 語音轉語音的翻譯,例如直接將英文語英翻成中文
  • S2TT: 語音轉文字翻譯,這比較像是把英文語音直接轉中文文字
  • T2ST: 文字直接轉語音,文字和語音不同語言
  • T2TT: 不同語言間的翻譯
  • ASR: 語音轉文字,同一種語言

功能很齊全,這次我們只用 ASR 這個功能,也許其它的東西將來有機會用到。如果想要試用的話,也有線上 demo 可以使用看看。

基本環境安裝

一些基本的環境 (如 anaconda、共用 script) 的設定,已經寫在【共同操作】 這篇文章裡,請先看一下,確保所以指令可以正確運作。

建立 conda env

由於每個專案的相依性都不同,這裡會為每個案子都建立環境。

下載專案與模型

這裡我們會下載要用到的語言模型 “seamless-m4t-vocoder” 和 “seamless-m4t-large”。不先下載的話,使用過程中也會自己下載,最終會放在位置 “~/.cache/torch/hub/”。如果你只是要試用評估,可以先跳過這部份,修改上還是有點繁雜。

由於下載的是一個 python 的套件的原始碼,要指定模型路徑的話,要修改一點東西。要使用指定模型的位置要先修改下面3個檔案,位置在 src/seamless_communication/assets/cards/

  • seamlessM4T_large.yaml: multitask_unity_large.pt
  • vocoder_36langs.yaml: vocoder_36langs.pt
  • unity_nllb-100.yaml: tokenizer.model

把裡面的 checkpoint / tokenizer 分別改成指向已下載的模型位置。例如

  • seamlessM4T_large.yaml: file://home/ubuntu/m4t/seamless_communication/seamless-m4t-large/multitask_unity_large.pt
  • vocoder_36langs.yaml: file://home/ubuntu/m4t/seamless_communication/seamless-m4t-vocoder/vocoder_36langs.pt
  • unity_nllb-100.yaml: file://home/ubuntu/m4t/seamless_communication/seamless-m4t-large/tokenizer.model

要特別注意的是,這裡的 file:// ,只能有2個slash而不是3個,用3個的話會錯誤,據說是為了安全因素。

安裝套件

接下來就安裝 seamless 這個套件,中間過程要下載很多東西,請稍待。

執行範例

安裝完成後,就可以來執行範例程式。上面的範例就會將 “out.wav” 這個檔做語音辨示,並印出來。若之前模型路徑有錯誤的話,會出現錯誤。再執行一次 pip install . 的部份,就可以修正再試一次。

結語

學著學著,AI的技術儲備的越來越完整了。大語言、翻譯、TTS、語音識別,瞭解的技術越多,就能做出更豐富的組合。

Leave a Reply(Name請以user_開頭,否則會被判定會垃圾息)

請輸入答案 × 6 = 36