iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0
AI & Data

利用SeamlessM4T學習語音辨識架構及應用系列 第 7

DAY07 - SeamlessM4T的S2TT(Speech-to-Text Translation)功能體驗

  • 分享至 

  • xImage
  •  

S2TT(Speech-to-Text Translation)為將語音轉為文本的模型,轉譯語言可以選擇。不管是輸入及輸出都可以選擇語言,所涵蓋的語言代號請參考連結:SeamlessM4T語言別代號。本篇使用SeamlessM4T的S2TT功能,看看使用流程是否容易上手,以及翻譯結果的準確性。

安裝SeamlessM4T

SeamlessM4T的安裝參考SeamlessM4T安裝及使用環境建置

使用步驟

先導入模型,本次推出的SeamlessM4T有三種型號:seamlessM4T_large與seamlessM4T_large。small版本只支援少量語言。以large版本為例,執行以下程式碼後即已備好模型:

import torch
from seamless_communication.models.inference import Translator

*# Initialize a Translator object with a multitask model, vocoder on the GPU.*
translator = Translator(
					    "seamlessM4T_large",
					    "vocoder_36langs",
					    torch.device("cuda:0"),
						  torch.float16,
)

此步驟的用意為在GPU上初始化一個轉譯器,選用模型"seamlessM4T_large",以及聲碼器"vocoder_36langs",官方建議選擇半精度浮點數(float16)可能是因為要節省記憶體,但可能因此影響翻譯精準度。

而S2TT功能的輸入需為音檔格式,而音檔格式取樣率限定為16kHz,若音檔取樣率不是16kHz,MetaAI提供以下程式碼轉換供使用者轉換自己的音檔取樣率:

import torchaudio
resample_rate = 16000
waveform, sample_rate = torchaudio.load(<path_to_input_audio>)
resampler = torchaudio.transforms.Resample(sample_rate, resample_rate, dtype=waveform.dtype)
resampled_waveform = resampler(waveform)
torchaudio.save(<path_to_resampled_audio>, resampled_waveform, resample_rate)

我使用的音檔為英文語音: ”The weather forecast says it will rain tonight.播放

將此音檔路徑丟入轉譯器translator中,設定模型為”s2tt”,目標語言為中文(官方公布的代碼為cmn),翻譯結果為”天气预报说今晚会下雨 ⁇”。

translated_text, _, _ = translator.predict(
                "./input_s2tt.wav",
                "s2tt",
                tgt_lang="cmn"
                )

print(translated_text)   #天气预报说今晚会下雨 ⁇

結論

不知為何他轉譯的中文後面有兩個問號,不過翻譯結果算是滿精準的。在使用流程上可以說是簡單容易好上手,讓筆者相當好奇背後的程式碼結構,非常值得研究。


上一篇
DAY06 - SeamlessM4T安裝及使用環境建置
下一篇
DAY08 - 測試SeamlessM4T的S2ST(Speech-to-Speech Translation)功能
系列文
利用SeamlessM4T學習語音辨識架構及應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言