SeamlessM4T使用了四個MetaAI開發的程式庫,fairseq2、SONAR、BLASER 2.0及stopes。在安裝使用前先了解各程式庫有哪些可以使用的模型,以及安裝注意事項。
fairseq2 是MetaAI建模組件開源庫,為研究及開發人員提供機器翻譯、語言建模和其他序列生成任務。其中預訓練完成且可直接使用的模型如下:
fairseq2也被用於SeamlessM4T及SONAR中。不過必須注意fairseq2目前並不支援Windows系統,只支援Linux及Mac系統,Windows建議可以先安裝WSL再安裝fairseq2。
是一種新的多語言和句子嵌入空間,提供多種語言的文本和語音編碼器。前篇介紹的SeamlessAlign 是基於 SONAR 嵌入進行探勘的數據集。
from sonar.inference_pipelines.speech import SpeechToTextModelPipeline
s2t_model = SpeechToTextModelPipeline(encoder="sonar_speech_encoder_eng",
decoder="text_sonar_basic_decoder",
tokenizer="text_sonar_basic_decoder")
import torchaudio
inp, sr = torchaudio.load("./tests/integration_tests/data/audio_files/audio_1.wav")
assert sr == 16000, "Sample rate should be 16kHz"
# passing loaded audio files
s2t_model.predict([inp], target_lang="eng_Latn")
# ['Television reports show white smoke coming from the plant.']
# passing multiple wav files
s2t_model.predict(["./tests/integration_tests/data/audio_files/audio_1.wav",
"./tests/integration_tests/data/audio_files/audio_2.wav"], target_lang="eng_Latn")
# ['Television reports show white smoke coming from the plant.',
# 'These couples may choose to make an adoption plan for their baby.']
BLASER 2.0 是MetaAI最新的模型的多模式翻譯評估指標,支持語音和文本,可直接對源訊號進行操作,不需要任何中間 ASR 系統。與第一個版本(1.0版)一樣,BLASER 2.0 妥善應用輸入和輸出句子嵌入之間的相似性,以提升評估效率。
利用原始語句及翻譯語句的 cross-lingual semantic similarity來評估相似性。
from sonar.inference_pipelines.text import TextToEmbeddingModelPipeline
from sonar.models.blaser.loader import load_blaser_model
blaser_ref = load_blaser_model("blaser_2_0_ref").eval()
blaser_qe = load_blaser_model("blaser_2_0_qe").eval()
text_embedder = TextToEmbeddingModelPipeline(encoder="text_sonar_basic_encoder", tokenizer="text_sonar_basic_encoder")
src_embs = text_embedder.predict(["Le chat s'assit sur le tapis."], source_lang="fra_Latn")
ref_embs = text_embedder.predict(["The cat sat on the mat."], source_lang="eng_Latn")
mt_embs = text_embedder.predict(["The cat sat down on the carpet."], source_lang="eng_Latn")
print(blaser_ref(src=src_embs, ref=ref_embs, mt=mt_embs).item()) # 4.688
print(blaser_qe(src=src_embs, mt=mt_embs).item()) # 4.708
*Query Expansion(QE):在資訊檢索和自然語言處理中,"qe" 代表 "Query Expansion"即查詢擴展,用於改進檢索系統性能的技術以更好地匹配文檔。
適用機器翻譯研究的預備數據程式庫。第一個版本提供了文本對文本的探勘工具來建立一個適用於翻譯模型的訓練資料集。在第二版本有擴充功能,基於 SONAR嵌入空間,支援訓練大型語音翻譯模型任務。同時提供讀取及寫入 fairseq audiozip 數據集的工具,以及一個新的探勘方式,可以進行語音到語音、文本到語音、語音到文本和文本到文本探勘。
SeamlessM4T引用了四個程式庫,其中SONAR程式庫已具備語音辨識功能,選擇encoder、decoder及tokenizer,predict函式中選擇目標語言,即可將語音數據轉譯成目標語言文本;而BLASER 2.0可以評估語句間的相似性,選擇模型"blaser_2_0_ref"或"blaser_2_0_qe",送入文本語句,即可顯示其語句間的關聯分數。