控制 NeMo Canary 多任務(wù)模型的任務(wù)與輸出語(yǔ)言)
如何用 prompt 參數(shù)控制 NeMo Canary 多任務(wù)模型的任務(wù)與輸出語(yǔ)言【免費(fèi)下載鏈接】SpeechA scalable generative AI framework built for researchers and developers working on Large Language Models, Multimodal, and Speech AI (Automatic Speech Recognition and Text-to-Speech)項(xiàng)目地址: https://gitcode.com/GitHub_Trending/nem/SpeechNeMo 的 Canary 系列是多任務(wù)語(yǔ)音模型同一個(gè) checkpoint 既可以做語(yǔ)音轉(zhuǎn)寫ASR也可以做語(yǔ)音翻譯AST還能控制是否加標(biāo)點(diǎn)、輸出哪種語(yǔ)言。控制這些行為的不是獨(dú)立的模型分支而是一組 prompt 參數(shù)source_lang、target_lang、task、pnc等。在推理時(shí)這些參數(shù)既可以直接作為model.transcribe()的入?yún)魅胍部梢詫懺?manifest 文件里逐條指定。本文以nvidia/canary-1b-v2為例說(shuō)明這兩種傳參方式、v1 與 v2/Flash 模型對(duì)參數(shù)的差異以及如何強(qiáng)制模型只輸出單一語(yǔ)言。準(zhǔn)備加載 Canary 多任務(wù)模型Canary 使用EncDecMultiTaskModel加載參見 ASR 推理文檔 的 Multi-task Inference 一節(jié)from nemo.collections.asr.models import EncDecMultiTaskModel canary EncDecMultiTaskModel.from_pretrained(nvidia/canary-1b-v2) decode_cfg canary.cfg.decoding decode_cfg.beam.beam_size 1 canary.change_decoding_strategy(decode_cfg)change_decoding_strategy中把beam_size設(shè)為 1 是文檔示例給出的做法用于在批量轉(zhuǎn)寫時(shí)控制解碼方式。可下載的 Canary checkpoint見 Featured Models 文檔包括nvidia/canary-1b-v2— 25 種語(yǔ)言支持 PnC 與 timestampsnvidia/canary-1b-flash/nvidia/canary-180m-flash— 面向速度優(yōu)化nvidia/canary-qwen-2.5b— 僅英文。注意模型代際Canary v1 與 Canary Flash / v2 的 manifest 字段要求不同下文會(huì)區(qū)分。方式一把 prompt 參數(shù)直接傳給 transcribe()最簡(jiǎn)單的路徑是把語(yǔ)言參數(shù)直接作為transcribe()的實(shí)參無(wú)需 manifestresults canary.transcribe( audio[audio.wav], batch_size4, source_langen, target_langen, pncTrue, )各參數(shù)的含義來(lái)自 Canary Manifest Format 文檔參數(shù)作用source_lang輸入音頻語(yǔ)言ISO 語(yǔ)言代碼如en、de、estarget_lang輸出轉(zhuǎn)寫語(yǔ)言ASR 時(shí)與source_lang相同翻譯時(shí)不同pnc是否啟用標(biāo)點(diǎn)與大小寫punctuation and capitalization對(duì)于 v2/Flash 模型task字段已不存在模型從語(yǔ)言對(duì)自動(dòng)判斷是 ASR 還是 ASTsource_lang與target_lang相同即轉(zhuǎn)寫不同即翻譯。例如德語(yǔ)音頻翻譯成英語(yǔ)就把source_langde、target_langen反之兩者都寫de就是德語(yǔ)轉(zhuǎn)寫。方式二通過(guò) manifest 逐條指定 prompt 字段批量處理時(shí)可以把同樣的 prompt 字段寫進(jìn) manifest每行一個(gè) JSON 對(duì)象然后直接把 manifest 傳給transcribe()results canary.transcribe(manifest.json, batch_size16)文檔明確說(shuō)明這些鍵在微調(diào)時(shí)從 manifest 讀取并編碼為 prompt tokens推理時(shí)則既可以寫在 manifest 里也可以作為model.transcribe()的實(shí)參傳入兩者等價(jià)。Canary v1如canary-1bmanifest 中四個(gè)鍵全部必填{audio_filepath: audio.wav, text: hello world, duration: 3.5, source_lang: en, task: asr, target_lang: en, pnc: yes}其中task取asr轉(zhuǎn)寫或ast翻譯pnc取yes或no。Canary Flash / v2如canary-1b-flash、canary-1b-v2去掉了task鍵pnc變?yōu)榭蛇x默認(rèn)yes并新增了若干可選鍵默認(rèn)值均來(lái)自文檔{audio_filepath: audio.wav, text: hello world, duration: 3.5, source_lang: en, target_lang: en, pnc: yes}鍵必填默認(rèn)值說(shuō)明source_lang是—輸入音頻語(yǔ)言ISO 代碼target_lang是—輸出語(yǔ)言ASR 與 source 相同翻譯時(shí)不同pnc否yesyes/no標(biāo)點(diǎn)與大小寫itn否no逆文本正則化timestamp否no預(yù)測(cè)詞級(jí)時(shí)間戳diarize否no說(shuō)話人分離decodercontext否上下文偏置如上一段轉(zhuǎn)寫文本emotion否undefined說(shuō)話人情緒提示取值neutral、angry、happy、sad、undefined如果 v1 模型的 manifest 缺少source_lang、target_lang、task、pnc中任一必填鍵推理時(shí)會(huì)拋出RuntimeError提示 manifest 缺少哪些鍵。強(qiáng)制輸出單一語(yǔ)言使用多語(yǔ)言 Canary 模型時(shí)如果把source_lang和target_lang都顯式設(shè)為同一種語(yǔ)言模型只按該語(yǔ)言轉(zhuǎn)寫results canary.transcribe( audio[audio.wav], source_langde, target_langde, )文檔指出這可以防止 phonetic drift——即模型在轉(zhuǎn)寫中途擅自切換語(yǔ)言的情況。處理混合語(yǔ)言環(huán)境中的德語(yǔ)音頻時(shí)用這種寫法而不是留空參數(shù)是更穩(wěn)妥的選擇。可選分支流式解碼時(shí)用 prompt 前綴傳參如果你的推理路徑是文檔中的流式腳本 speech_to_text_aed_streaming_infer.pyprompt 參數(shù)不走transcribe()實(shí)參而是在命令行用prompt.前綴追加python3 examples/asr/asr_chunked_inference/aed/speech_to_text_aed_streaming_infer.py \ pretrained_namenvidia/canary-1b-v2 \ dataset_manifestpath to manifest \ left_context_secs10 \ chunk_secs1 \ right_context_secs0.5 \ batch_size32 \ decoding.streaming_policywaitk \ prompt.pncyes \ prompt.taskasr \ prompt.source_langen \ prompt.target_langen文檔特別提醒用prompt管理這些參數(shù)對(duì) AST 任務(wù)尤其重要。注意此腳本示例中task仍作為prompt.task傳入asr/ast與 Python API 下 v2 模型由語(yǔ)言對(duì)推斷任務(wù)的行為不完全相同按所用腳本的文檔執(zhí)行即可。結(jié)果驗(yàn)證與限制驗(yàn)證方式transcribe()返回的每個(gè)結(jié)果可通過(guò).text屬性讀取轉(zhuǎn)寫文本文檔 Basic Transcription 一節(jié)展示了print(outputs[0].text)的讀法。對(duì)單語(yǔ)言強(qiáng)制場(chǎng)景檢查返回文本是否為預(yù)期語(yǔ)言即可pnc生效時(shí)文本應(yīng)帶標(biāo)點(diǎn)與首字母大寫。v1 與 v2 不可混用v1 的必填task鍵在 v2/Flash 中已移除反之 v2 的itn、timestamp、diarize等鍵是 v1 文檔未列出的。建 manifest 前先確認(rèn)所用 checkpoint 的代際。音頻要求NeMo ASR 推理要求 16 kHz 單聲道音頻ASR 推理文檔。長(zhǎng)音頻Canary-1b-v2 支持長(zhǎng)音頻轉(zhuǎn)寫轉(zhuǎn)寫單個(gè)文件或batch_size1時(shí)會(huì)自動(dòng)啟用帶重疊窗口的動(dòng)態(tài)分塊也可以用 asr_chunked_inference 腳本按chunk_len_in_secs默認(rèn) 40 秒手動(dòng)分塊。需要進(jìn)一步調(diào)解碼行為beam、時(shí)間戳?xí)r可繼續(xù)參考 ASR 推理文檔與 ASR 配置文檔manifest 的完整字段定義見 Datasets 文檔 的 Canary Manifest Format 一節(jié)。【免費(fèi)下載鏈接】SpeechA scalable generative AI framework built for researchers and developers working on Large Language Models, Multimodal, and Speech AI (Automatic Speech Recognition and Text-to-Speech)項(xiàng)目地址: https://gitcode.com/GitHub_Trending/nem/Speech創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考