在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ASR算法實踐及部署方案

沐曦MetaX ? 來源:沐曦AI解決方案 ? 2023-08-31 15:12 ? 次閱讀

引言

語音識別(Automatic Speech Recognition)是AI領域的一項重要應用,是一種將人的語音轉換為文本的技術。

其主要的應用場景有:單獨使用該技術的字幕生成,會議轉寫以及聯合語音合成技術使用的智能助手、智能音箱、智能汽車等。

其中字幕生成包括視頻的離線字幕生成以及直播場景下的在線字幕生成。隨著短視頻和直播場景的興起,我們對自動字幕的需求也越來越大,這對推理GPU的速度、延時和成本也是很大的挑戰。

本文將介紹ASR模型工作原理,離線字幕生成場景優化,以及ASR在沐曦曦思N100人工智能推理GPU上如何做靜態部署,后者可作為其他序列生成模型的靜態化部署參考方案。

ASR模型介紹

一般聲音聲波輸入聲學模型前,會將語音預處理轉換為梅爾圖譜,即將聲音以一定的幀長切成短幀,然后使用傅里葉變換得到頻譜,依照人類對不同頻率音頻的敏感程度不同,頻譜又經過梅爾三角濾波器組,最后得到信息密度更高的梅爾頻譜作為ASR模型的輸入。

為了解決從梅爾頻譜到文字的對齊問題,學界有兩種對齊方案:

對齊方案 1

不學習對齊,允許空格和重復輸出,直接在計算損失時使用CTC 損失得到規整后為正確結果的所有路徑概率和,讓概率和最大。本方案為非自回歸方案,速度快、易訓練,但由于不考慮上下文,其結果容易造成結巴或漏字。

對齊方案 2

用序列到序列編碼器-解碼器的方式學習基于注意力的語音文字軟對齊。本方案為自回歸方案,考慮了上下文,精度更高,但對齊靈活性容易被干擾且解碼速度更慢。

目前效果較好且比較流行的語音識別端到端模型的一般結構是結合前面兩種方案,即把兩種模型放在同一個模型結構中,共享編碼器部分,以wenet模型[1]為例,其訓練時的數據流向為:

1

用語音預處理從語音波形中提取梅爾圖譜特征。

2

以conformer模型作為編碼器(綠色),進一步提取和融合輸入特征。

3

注意力解碼器部分(紅色)在訓練時為編碼器后接入一個基于注意力的解碼器,在只能看到歷史信息的掩碼限制下生成目標句子,再對每個字得到平滑交叉熵損失。在前向推理時,利用編碼器輸出和歷史解碼器結果自回歸生成下一個文字。(紅色部分)。

4

CTC 解碼器部分(黃色)在訓練時為編碼器后接一個全連接層再接CTC損失,利用CTC規避訓練時的語音文本對齊問題,在前向推理時每幀得到空格或文字,對生成結果規整后即得到目標語句。CTC 解碼器在前向推理時可以結合語言模型如n-gram語言模型一起使用,提升正確率。

c1e1fb5e-47c5-11ee-97a6-92fbcf53809c.png

圖2 ASR模型結構介紹

由于CTC head加ngram語言模型和注意力head均能生成結果文字,在落地使用時有多種解碼方式:

解碼方案 1

直接以CTC head結果為準,這種方案解碼速度很快,但正確率較低。

解碼方案 2

CTC head生成概率最高的topk句,由注意力 head分別為多句進行評分,即整句每個字概率加和,選出top1的句子,這種方案正確率高于方案1,速度慢于方案1。

解碼方案 3

注意力head每個字生成后,結合該字在CTC head的分數共同評估,得到當前時刻的top1的字,這種方案正確率高于方案2,速度慢于方案2。

從方案1到方案3,正確率越來越高,解碼速度越來越慢。使用時可根據實際場景選擇。為確保正確率,一般采取后兩種方案。

字幕生成鏈路改進

經過調研和實驗,我們嘗試了一些讓生成字幕準確率更高的方法,以下為完備有效的鏈路:

c1f97360-47c5-11ee-97a6-92fbcf53809c.png

圖3 字幕生成鏈路

從視頻提取到音頻后,先使用傳統方法對背景音樂和噪聲進行去除;然后啟用長音頻切分,即利用深度學習方法檢測人聲,在合適的沒有檢測到人聲的地方把長語音斷成許多短語音;接著將短語音送入ASR聲學模型,在熱詞的輔助下輸出識別結果;最后將結果送入糾錯語言模型進行一些簡單的詞錯誤糾正,得到最終的字幕文件。以上各模塊均能發揮一定的作用。

以下是鏈路中模塊加入前后的示例:

音頻原識別結果改進后識別結果改進原理

那這樣吧今天下午我來拿情臉那這樣吧今天下午我來拿行李前置去背景音樂模塊后ASR模型就能正確識別最后兩個字

不過你也知道我大姐的脾氣,他向來不主張明家的子弟去搞政治不過你也知道我大姐的脾氣,她向來不主張明家的子弟去搞政治原音頻為兩段,通過VAD后聚類后兩段合成一段,使得模型有更多前后信息,“她”字識別正確

喂清云我錯了喂清俞我錯了加入的熱詞中有角色名,解碼時優先熱詞,“俞”字識別正確

下將具體介紹我們在長音頻切分模塊和ASR模型解碼模塊做的一些改進。

3.1

長音頻切分優化

長音頻切分模塊中,我們通過使用深度學習模型marblenet做語音活動性檢測,即判斷每一幀是人聲還是環境音,并通過模型蒸餾、構造數據、加入更豐富影視數據等提升分類精度。

在得到幀分類后可通過設定pad_onset, pad_offset, min_duration.max_duration等參數找到切分點,把長句切分成多個短句,可根據實際需要調整以上參數數值。

同時由實驗得到,多個相關短句合并成小長句后識別效果常好于單個短句,原因是在解碼時能利用上文語義信息得到更好的結果,但太長又會導致耗時和顯存增加。故在切分準確的基礎上,我們通過一維時間聚類的方式,將距離較近的短句通過多輪融合,形成限定長度內的小長句進行識別。

具體的合并邏輯是所有短句按照由短到長的優先順序,每個短句左右擴張pad_len,若觸達另一短句則合二為一。以上邏輯重復多次,pad_len也慢慢增大。同時在合并過程中如果長度達到max_len則也不再擴張。

c210cff6-47c5-11ee-97a6-92fbcf53809c.png

圖4 短句聚合邏輯

以上邏輯能在合理范圍內,把時間上靠近的短句集合合成一句長句,有利于在解碼時語言模型的信息獲取,使識別結果更加準確。

3.2

ASR模型及解碼參數優化

在電視劇場景中使用ASR模型首先會碰到背景噪聲問題,我們在模型方面也做了微調使得ASR模型對噪聲更加魯棒。具體的做法是取部分訓練數據,在訓練時原語音隨機添加上腳步聲、人群嘈雜聲、環境聲等噪聲數據,利用這些數據對原始模型進行微調,微調后字幕CER減少0.07%左右。

同時,我們在CTC解碼時使用上了4_gram語言模型,以下是一些字幕生成場景下ASR模型解碼參數調整經驗:

1

電視劇涉獵較廣,如古裝電視劇常出現成語,商業電視劇常出現經濟用語等,可根據實際需要針對性地增加4_gram語言模型的訓練語料。

2

也可把上述4_gram語言模型換成bert或者加入bert,能提升一些識別正確率但是嚴重影響解碼速度,故工程上還是建議4_gram語言模型。

3

電視劇語氣詞較多,若要保留這些語氣詞,防止使用語言模型后語氣詞消失,需調高識別成空格的閾值,blank_skip_thresh可設為0.99。

4

與上同理,為保留更多語氣詞適當增加WFST解碼時聲學模型的概率,acoustic_scale可設為2。

5

為讓熱詞發揮更好的效果,可適當調大熱詞權重,context_score可設為10。

總的來說,在影視劇字幕生成領域中,我們發現長音頻切分的好壞對字幕結果起到了決定性作用。同時將wenet模型用于部署時可根據使用場景對模型或者解碼參數進行一些微調,能在目標領域變得更加準確。通過以上改進再加上鏈路上的前后處理,我們測試集上平均字錯率由16.57%下降到12.11%。僅從識別準確度看,比當前最好的商用軟件效果略好。

ASR部署

出于對推理速度的要求,一般需要將訓練好的模型部署在GPU上使用, ASR模型輸入shape是動態變化的,為達到靜態化部署的目的,這里采用padding-分桶思路來支持動態輸入,本方案對其他編碼器_解碼器類生成式任務的靜態化部署都有借鑒意義。

在ASR中,輸入的語音長度是變化的,即編碼器的輸入輸出,CTC 解碼器的輸入輸出以及注意力解碼器的輸入輸出都是變化的,中間特征的長度會隨著輸入語音長度的變化而變化。

為固定輸入長度,我們將輸入語音pad到最長語音長度max_speech_len,之后用mask控制計算的范圍,同時使用注意力解碼器時也把歷史文字輸出pad到最長文字長度max_word_len,之后用valid_len來表示本次前向要生成的文字編號。具體來說,需要對編碼器編碼模塊和注意力解碼模塊做一定的調整。

實踐使用中,可以設置多個梯度max_speech_len,實際使用中按照輸入語音長度分桶,用對應最大長度模型解碼。

4.1

encoder模塊部署

其中,encoder的具體模型結構如下:

c21e0dc4-47c5-11ee-97a6-92fbcf53809c.png

圖5 encoder部分細節結構圖

其中token_num取決于輸入語音的長度,是可變的,為剔除動態性我們將該維度pad到最大,但是直接padding會影響softmax計算和conformer結構里相對位置編碼以及depthwise卷積部分,為了消除對計算結果的影響,需要對模型結構進行微調。

4.1.1

消除Padding對softmax計算的影響

c238e9e6-47c5-11ee-97a6-92fbcf53809c.png

圖6 encoder部分RelPositionAttention模塊前向圖

模型的輸入改為:

input_pad:pad后的input

mask:記錄了input_pad中有效的長度,其中mask的前valid_len個為1,后面為0

mask中包含有效長度信息后能去除掉計算中pad部分的影響。

4.1.2

消除Padding對rel_shift的影響

如上圖中所示,espnet工程中matrix_bd會先經過rel_shift來達到把matrix_bd中絕對位置編碼改成相對位置編碼的目的,原代碼的實現方式為:

c24fa83e-47c5-11ee-97a6-92fbcf53809c.png

圖7 rel_shift 實現方式

來源:https://zhuanlan.zhihu.com/p/74485142

通過對矩陣的pad+reshape達到相對位置編碼的作用。

輸入作pad填充后token_emb后面為無效特征,再用pad+reshape方式rel_shift,會導致無效特征前移錯位。

我們這里先分別用gather操作得到左下角和右上角矩陣,再利用一個半角mask將兩個矩陣進行合并。最后對多余部分進行置0操作,得到和原rel_shift操作結果一致(只是做了pad)的結果。

c28ee53a-47c5-11ee-97a6-92fbcf53809c.png

圖8 輸入pad后復現rel_shift 方案

4.1.3

消除Padding對depthwise_conv的影響

c2b1c2ee-47c5-11ee-97a6-92fbcf53809c.png

圖9 輸入pad后復現rel_shift方案

conformer模塊中使用了分組卷積,前后分別進行pointwise conv和1D depthwise conv。由于token_num/4維度我們會pad到最大,此時由于depthwise conv kernel》1,會讓無效特征也參與計算干擾結果。

解決方案是在depthwise前加一步根據mask的歸0操作,把pad進去部分的特征都歸0。

4.2

Attention decoder模塊部署

c2d0b776-47c5-11ee-97a6-92fbcf53809c.png

圖10 encoder部分細節結構圖

Attention decoder每次調用只生成一個字。其輸入是encoder output特征,我們記作memory,以及歷史生成的字x,輸出是語音的下一個字。生成一句N個字的句子需要調用Attention decoder N+1次,在遇到標簽或者達到最高字數時停止。

這里模型調用了6層decode layer,每層由一個self attention以及一個cross attention組成,為減少重復計算,會保存每次每層decoder layer的輸出(我們記作cache),在下一次計算時只計算每層最新的一個token結果然后和保存的concat,再輸往下一層,同時為下一次decoder保存當前new_cache。

原始輸入為x,memory和cache。

要把Attention decoder改為固定長度輸入,需要做的修改如下:

1

self attention部分:x改為x_pad和x_q,這里x表示歷史的n無法根據index動態抽取,我們提前將最后一個token單獨提取出來作為外部傳入的輸入x_q,x_q為x_pad里有效的最后一個token,注意需手動加上對應位置的position embedding。

2

cross attention部分:保持前面self attention的結果作為把原始的不定長的memory改為encoder output輸入的pad后memory,同時加上memory mask以指示有效長度,防止關注到pad的部分,用于cross attention部分。

3

self attention和cross attention組成一層完整的decoder層,在生成一層decoder輸出x_q后,在動態輸入操作中,需要把之前保存的該層輸出前面token結果concat到x_q上去,這也屬于動態維度的操作,部署中無法使用,而在我們靜態輸入中,則選擇where操作把x_q拷貝到pad后的state的第valid_len-1位置上去,故這里需要valid_len作為輸入來進行拷貝引導,這里的valid_len是用于指示當前共有幾個字,即我們關注的是第幾個token的輸出,在使用時每次調用valid_len加一。

4

取最后一層decoder的輸出的x_q,經過一層softmax層得到最終的token概率分布。

修改后的輸入為x_pad,x_q,memory,memory_mask,cache和valid_len,

修改后的代碼流程如下:

c2e3db6c-47c5-11ee-97a6-92fbcf53809c.png

圖11 attention decoder部分修改后示意圖

小結

以上介紹了語音識別技術的應用場景,語音識別算法的原理、難點和解決方案,也介紹了我們在字幕生成場景中所做的實踐。微調開源模型加上細致的前后處理,在我們的測試集上能夠達到較好的可使用效果。未來ASR瓶頸更多的在于如何提升識別速度,以及在復雜場景下怎樣結合其他技術優化ASR結果。

最后我們為ASR在沐曦曦思N100人工智能推理GPU上做了較好的靜態部署,通過pad加mask的方案使動態輸入達成固定長度,為保持計算邏輯不變,我們也對模型編碼器和注意力解碼器部分做了許多調整,該解決方案可作為其他序列生成模型的靜態化部署參考。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 算法
    +關注

    關注

    23

    文章

    4624

    瀏覽量

    93113
  • ASR
    ASR
    +關注

    關注

    2

    文章

    43

    瀏覽量

    18759
  • 模型
    +關注

    關注

    1

    文章

    3279

    瀏覽量

    48974
  • 傅里葉變換
    +關注

    關注

    6

    文章

    442

    瀏覽量

    42652

原文標題:【智算芯聞】ASR算法實踐及部署方案

文章出處:【微信號:沐曦MetaX,微信公眾號:沐曦MetaX】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    最新一款LoRa 集成了單芯片SoC ASR6501/ASR6502

    的基于ASR6501的RF-AL42UH這一新的LoRa無線方案能有效緩解國內芯片半導體客戶的緊張情緒。ASRASR6501/ASR650
    發表于 03-11 15:06

    國內全新LoRa系統芯片ASR6505 內置SOC

    LoRa系列產品已能夠支持幾乎全部行業應用及產品解決方案ASR6505是基于STM 8位MCU與SX1262 的SiP芯片,相對于32位MCU更具成本優勢,8mm*8mm*0.9mm的超小尺寸可以滿足
    發表于 03-11 15:39

    ASR6501與SX1262優勢區別

    家合作伙伴,包括模組廠和系統方案商。慧聯無限、瑞興恒方、唯傳科技、門思科技、光寶科技等十余家客戶已采用ASR6501芯片設計出小尺寸模組。上海順舟、杭州金卡智能等系統方案商也在使用ASR
    發表于 03-23 14:33

    簡化針對云服務的語音檢測算法部署

    DBM10芯片為完整解決方案的原因。SoC針對音頻算法以及使用通用DSP和稱為nNetLite的神經網絡處理器的感應AI算法進行了優化。此外,DSP Group提供了在Wi-Fi芯片上運行的其他
    發表于 03-03 10:46

    怎樣去驗證可部署目標硬件與軟件算法模型之間的算法性能一致性?

    如何去設計一款合理的電子硬件解決方案,從而實現經濟有效的大規模生產與部署?怎樣去驗證可部署目標硬件與軟件算法模型之間的算法性能一致性?Sys
    發表于 04-08 06:25

    asr翱捷LORA系列芯片選型參考推薦ASR6601/asr6505/asr6501/asr6500

    ASR6601 SoC是國內首顆支持LoRa的LPWAN SoC。ASR6601芯片中集成的超低功耗收發機,除了支持LoRa調制方式外,還可以支持FSK收發、MSK收發和BPSK發射等。在3.3V
    發表于 03-22 13:14

    ASR控制系統,ASR控制系統是什么意思

    ASR控制系統,ASR控制系統是什么意思 如圖1所示為ASR控制系統的原理框圖。
    發表于 03-11 17:40 ?1.7w次閱讀

    基于粒子群優化PSO算法部署策略

    針對云計算基礎設施即服務(IaaS)中的虛擬機部署問題,提出一種基于粒子群優化(PSO)算法部署策略。由于PSO算法在處理虛擬機部署這類大
    發表于 12-26 10:32 ?1次下載

    docker compose一鍵打包部署項目的實踐

    【導讀】本文介紹了 docker compose 一鍵打包部署項目的實踐
    的頭像 發表于 08-30 11:03 ?1591次閱讀

    解決自動語音識別部署難題

    成功部署自動語音識別( ASR )應用程序可能是令人沮喪的體驗。例如,考慮到存在許多不同的方言和發音, ASR 系統很難在保持低延遲的同時正確識別單詞。
    的頭像 發表于 10-11 10:56 ?1015次閱讀
    解決自動語音識別<b class='flag-5'>部署</b>難題

    部署Linux的最佳實踐探索

    編者按:本文節選自節選自《基于Linux的企業自動化》第五章。“第5章,使用Ansible構建用于部署的虛擬機模板,通過構建虛擬機模板來探索部署Linux的最佳實踐,虛擬機模板將以實際操作的方式大規模
    的頭像 發表于 05-16 09:35 ?589次閱讀

    ASR語音識別技術應用

    ASR(Automatic Speech Recognition)語音識別技術,是計算機科學與人工智能領域的重要突破,能將人類語音轉換為文本,廣泛應用于智能家居、醫療、交通等多個領域。以下是對ASR
    的頭像 發表于 11-18 15:12 ?899次閱讀

    ASR和機器學習的關系

    自動語音識別(ASR)技術的發展一直是人工智能領域的一個重要分支,它使得機器能夠理解和處理人類語言。隨著機器學習(ML)技術的迅猛發展,ASR系統的性能和準確性得到了顯著提升。 ASR技術概述 自動
    的頭像 發表于 11-18 15:16 ?364次閱讀

    ASR技術的未來發展趨勢 ASR系統常見問題及解決方案

    自動語音識別(Automatic Speech Recognition,簡稱ASR)技術是人工智能領域的一個重要分支,它使得機器能夠理解和處理人類語言。隨著技術的進步,ASR技術的未來發展趨勢主要
    的頭像 發表于 11-18 15:20 ?973次閱讀

    ASR與傳統語音識別的區別

    ASR(Automatic Speech Recognition,自動語音識別)與傳統語音識別在多個方面存在顯著的區別。以下是對這兩者的對比: 一、技術基礎 ASR : 基于深度學習算法的新型語音
    的頭像 發表于 11-18 15:22 ?564次閱讀
    主站蜘蛛池模板: 国模精品| 天天上天天操| 明日花绮罗snis-862在线播放| 起碰免费视频| 免费看一毛一级毛片视频| 久久夜色精品国产噜噜| 狠狠色网| 1024人成网站色| 天天操狠狠| 国产精品天天干| 成人欧美一区二区三区白人| 午夜男人的天堂| 伊人精品视频在线| 四虎永久在线精品影院| 欧美色亚洲| 国产一级做a爰片久久毛片男 | 亚洲欧美日本视频| 日本在线免费| 亚洲国产成+人+综合| 三级毛片网站| 狠狠狠狠狠狠狠狠| 亚洲激情视频网站| 九九视频只有精品| 中国china体内裑精亚洲毛片| 饥渴少妇videos| 五月综合激情| 噜噜噜久久| 闲人综合| 在线观看视频播放| 高颜值美女啪啪| 四虎国产在线观看| 精品啪啪| 午夜精品免费| 日韩激情淫片免费看| 狠狠色噜噜狠狠狠狠97| 色麒麟影院| 国产精品永久免费自在线观看| 天堂资源最新版在线官网| 免费午夜影片在线观看影院| 一卡二卡三卡四卡无卡在线| 欧美freesex10一|3|