色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

在X3派上玩轉一億參數量超大Transformer,DIY專屬你的離線語音識別

地瓜機器人 ? 2023-02-21 16:08 ? 次閱讀

Transformer模型在自然語言領域被提出后,目前已經擴展到了計算機視覺、語音等諸多領域。然而,雖然Transformer模型在語音識別領域有著更好的準確率,但還面臨著一個問題,計算復雜度和內存儲存開銷會隨著語音時長的增加而變大。

技術普及在于產品價格親民,而價格親民在于技術易落地易實現,離線語音識別應運而生,運用深度學習等技術且只需在本地進行運算就可實現人機語音交互,而且具備實時的響應速度、無需聯網的特點,能更好的應用在大小家電、照明、車載、健康儀器、教育設備等行業。

本次內容由社區優秀開發者、首百第四批新品體驗官——宋星辰將帶領大家DIY個人專屬離線語音識別,在X3派上玩轉一億參數量的超大Transformer。歡迎感興趣的旭友們點擊注冊地平線開發者社區交流討論,相關文檔詳見地平線開發者社區。

技術詳解

Step-1:模型轉換的環境準備

環境準備本身沒有什么奇技淫巧,這里想重點描述的是:pytorch版本的升級對精度瓶頸和速度瓶頸分析所帶來的跨越式的體驗提升。

在地平線開發者社區官方提供的安裝包中,為了兼容訓練算法包海圖(HAT),安裝的 pytorch版本為1.10.0。pytorch版本本身對模型轉換的精度不會有什么影響,但是不同版本的pytorch所導出的onnx,在節點(node, 或稱op)命名上有很大的區別。

就一般情況而言,當torch版本為1.10.0時,Node的命名采用了“optype+數字”的形式,這種形式的缺點是:當模型 Layer/SubLayer數量非常多(比如本文一億參數量的Transformer,包含的 OP 有上千個),我們很難一眼定位 Conv_xx 到底是第幾層的第幾個卷積。

1.png


torch 1.10.0版本結果

通常一個量化明顯掉點的模型,會從中間某一個OP開始有鮮明的Cosine Similarity損失,在當前的命名格式下,為了找到這個OP在原始模型中的位置(第x Layer的第y SubLayer),我們需要從頭開始一個一個數,這無疑是效率低下的。當然,隨著對模型細節的熟悉,定位的速度會越來越快,但這不能從根本上解決效率問題。

相反,當torch版本升級到1.13.0時Node的命名采用了“Layer+SubLayer+Attribute+OP”的形式,一眼定位,一眼丁真,大大節省了開發人員定位精度問題(哪層的OP相似度下降嚴重)or 速度問題(哪層的OP跑在CPU)的時間。

2.png


torch 1.13.0版本結果

Step-2:C++ Demo 的編譯

由于X3派板端內存有限,編譯C++ Demo時筆者采用了交叉編譯的形式,在開發機上sudo安裝aarch gcc即可。至于使用C++實現BPU模型的板上推理,實現推理的邏輯本身是一件很容易的事情,無論是使用python實現亦或是C++實現,其流程都是固定的,也即:

3.png

關于這四個步驟的API調用范例,官方 C++ 文檔中都給出了比較詳細的 know-how 示例,但是大多數都是單模型 + 單輸入的簡單case,在語音識別模型中,會涉及到 多模型(多個bin串聯)+ 多輸入(一個bin有多個輸入)的情況,這里給出本文的針對性示例:

// BPUAsrModel 類定義 using hobot::easy_dnn::Model; using hobot::easy_dnn::DNNTensor; using hobot::easy_dnn::TaskManager; using hobot::easy_dnn::ModelManager; class BPUAsrModel : public AsrModel { public: BPUAsrModel() = default; ~BPUAsrModel(); BPUAsrModel(const BPUAsrModel& other); void Read(const std::string& model_dir); void PrepareEncoderInput(const std::vector>& chunk_feats); // 其他成員函數... protected: void ForwardEncoderFunc(const std::vector>& chunk_feats, std::vector>* ctc_prob) override; private: // models std::shared_ptr encoder_model_ = nullptr; std::shared_ptr ctc_model_ = nullptr; // input/output tensors, 使用vector方便應對單模型多輸入的情況 std::vector> encoder_input_, encoder_output_; std::vector> ctc_input_, ctc_output_; // 其他成員變量... };

Step-3:正式開始模型轉換

(一)一行代碼 改寫Transformer模型

使用工具鏈去轉換NLP領域的原生Transformer模型,體驗可能會是非常糟糕的(甚至會在轉換過程中直接報錯)。這是因為NLP中的Transformer,輸入tensor的維度通常是二維或三維,類型既包含float也包含long 。而XJ3芯片在設計時只著重考慮了視覺任務,通常都是浮點的四維圖像輸入,工具鏈也只對這類視覺模型有比較極致的體驗優化。

那么,為了轉換NLP類的Transformer,我們是否需要重頭訓練一個四維數據流的模型呢?答案顯然是否定的,本文通過等價替換和抽象封裝,實現了一行代碼將原生Transformer等價改寫為BPU友好的Transformer:

# 一鍵完成 3D數據流 Transformer 等價轉換 4D數據流 Transformer Encoder4D = wenet.bin.export_onnx_bpu.BPUTransformerEncoder(Encoder3D)

這里的BPU TransformerEncoder就像是科幻電影中的“外骨骼機甲”一樣,其內核沒變(權重參數值沒變),但是功能上實現了針對性升級。具體而言,在 BPUTransformerEncoder 的構造過程中,會逐OP遍歷原生的 Encoder3D,并對其中的 BPU 不友好的 OP 實施等價改寫。

(二) 一句命令 走完轉換全流程

一個完整pytorch模型到bpu模型的轉換流程,一般要經過如下四步:

①pytorch 模型 轉 onnx 模型;

②構造 Calibration 數據;

③構造 config.yaml;

④調用 hb_mapper 執行 onnx 轉 bpu bin。

在WeNet開源的代碼中,我們用人民群眾喜聞樂見的python把這四個步驟 “粘” 到了一起,使用如下命令,就可走完全流程。

python3 $WENET_DIR/tools/onnx2horizonbin.py \ --config ./model_subsample8_parameter110M/train.yaml \ --checkpoint ./model_subsample8_parameter110M/final.pt \ --output_dir ./model_subsample8_parameter110M/sample50_chunk8_leftchunk16 \ --chunk_size 8 \ --num_decoding_left_chunks 16 \ --max_samples 50 \ --dict ./model_subsample8_parameter110M/units.txt \ --cali_datalist ./model_subsample8_parameter110M/calibration_data/data.list

其中:

config(描述了模型配置,幾層layer等);

checkpoint(pytorch 浮點模型);

output_dir(.bin 文件輸出目錄);

chunk_size(跟識別有關的解碼參數);

num_decoding_left_chunks(跟識別有關的解碼參數);

max_samples(使用多少句數據制作calibration data);

dict(字典);

cali_datalist(描述了標定數據的位置)。

綜上,我們對如下這四個步驟實現了完完全全的 python化封裝 和 一體化串聯 ,真正實現了一句命令(python3 $WENET_DIR/tools/onnx2horizonbin.py ...)走完全部轉換流程。

Demo展示

硬件配置:

4.png

模型配置:

5.png

解碼速度對比(單核單線程,量化后的模型):

6.png

本文轉自地平線開發者社區
原作者:xcsong

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

    關注

    5084

    文章

    19133

    瀏覽量

    305661
  • 語音識別
    +關注

    關注

    38

    文章

    1742

    瀏覽量

    112690
  • 人工智能
    +關注

    關注

    1791

    文章

    47345

    瀏覽量

    238730
  • Transformer
    +關注

    關注

    0

    文章

    143

    瀏覽量

    6014
收藏 人收藏

    評論

    相關推薦

    離線語音識別技術引領智能語音燈具市場——NRK3502

    智能語音燈具集高科技與人性化設計,內置NRK3502離線語音識別芯片,支持遠場識別與自定義指令,提供便捷智能體驗,推動智能家居行業發展。
    的頭像 發表于 12-30 15:04 ?88次閱讀
    <b class='flag-5'>離線</b><b class='flag-5'>語音</b><b class='flag-5'>識別</b>技術引領智能<b class='flag-5'>語音</b>燈具市場——NRK3502

    NRK3502系列芯片 | 制氧機離線語音識別方案

    NRK3502芯片制氧機離線語音識別方案制氧機離線語音識別方案是基于NRK3502藍牙雙模智能
    的頭像 發表于 12-04 01:02 ?137次閱讀
    NRK3502系列芯片 | 制氧機<b class='flag-5'>離線</b><b class='flag-5'>語音</b><b class='flag-5'>識別</b>方案

    離線語音芯片讓家電變得智能

    目前智能語音有多種方式,常見的有在線語音離線語音。因為智能語音處理需要用到算力,所以剛開始都是云端服務器提供算力來進行
    的頭像 發表于 11-27 01:00 ?172次閱讀
    <b class='flag-5'>離線</b><b class='flag-5'>語音</b>芯片讓家電變得智能

    EVS103智能純離線語音識別芯片介紹

    EVS103是一顆亞毫瓦級超低功耗面向帶電池和便攜式產品,以及對功耗有嚴苛要求的各類產品推出的智能純離線語音識別芯片。依托于POROSVOC語音
    的頭像 發表于 11-11 11:34 ?264次閱讀
    EVS103智能純<b class='flag-5'>離線</b><b class='flag-5'>語音</b><b class='flag-5'>識別</b>芯片介紹

    影響離線語音識別靈敏度的因素

    有用戶反饋離線語音識別不靈敏,跟著筆者一起分析原因吧。筆者知識能力有限,難免會誤,還請大家批評指正。
    的頭像 發表于 10-25 17:13 ?375次閱讀
    影響<b class='flag-5'>離線</b><b class='flag-5'>語音</b><b class='flag-5'>識別</b>靈敏度的因素

    物聯網系統智能控制產品的語音識別方案_離線語音識別芯片分析

    01 物聯網系統中為什么要使用離線語音識別芯片 物聯網系統中使用離線語音識別芯片的原因主要基于以
    的頭像 發表于 09-26 17:56 ?632次閱讀
    物聯網系統智能控制產品的<b class='flag-5'>語音</b><b class='flag-5'>識別</b>方案_<b class='flag-5'>離線</b><b class='flag-5'>語音</b><b class='flag-5'>識別</b>芯片分析

    九芯電子NRK330X智能風扇離線語音控制方案

    隨著科技的快速發展,離線語音識別技術逐漸成為智能家居領域的重要組成部分。它能夠將人類的語音轉化為計算機可識別的數字信號,并在不需要聯網的情況
    的頭像 發表于 09-21 08:02 ?311次閱讀
    九芯電子NRK330<b class='flag-5'>X</b>智能風扇<b class='flag-5'>離線</b><b class='flag-5'>語音</b>控制方案

    智能玩具用離線語音識別芯片有什么優勢

    隨著科技的發展,很多智能電子產品和兒童玩具實現了與人類的交互,語音芯片在這些人機交互中起到了不可替代的作用,語音識別芯片在智能玩具中的應用就為其帶來了更多的優勢。?離線
    的頭像 發表于 09-20 10:00 ?293次閱讀
    智能玩具用<b class='flag-5'>離線</b><b class='flag-5'>語音</b><b class='flag-5'>識別</b>芯片有什么優勢

    智能玩具用離線語音識別芯片有什么優勢

    離線語音識別芯片NRK3301智能玩具中應用廣泛,其高識別率、低成本、低功耗等特性,提升了用戶體驗和互動性,支持本地和云端處理,適合無網絡
    的頭像 發表于 09-19 10:00 ?601次閱讀
    智能玩具用<b class='flag-5'>離線</b><b class='flag-5'>語音</b><b class='flag-5'>識別</b>芯片有什么優勢

    什么是離線語音識別芯片?與在線語音識別的區別

    離線語音識別芯片適用于智能家電等,特點為小詞匯量、低成本、安全性高、響應快,無需聯網。在線語音識別功能更廣泛、
    的頭像 發表于 07-22 11:33 ?415次閱讀

    Transformer模型語音識別語音生成中的應用優勢

    隨著人工智能技術的飛速發展,語音識別語音生成作為人機交互的重要組成部分,正逐漸滲透到我們生活的各個方面。而Transformer模型,自其誕生以來,憑借其獨特的自注意力機制和并行計算
    的頭像 發表于 07-03 18:24 ?1155次閱讀

    智能故事機離線語音識別芯片,兒童教育新體驗!

    產品如虎添翼,成為了市場上的熱銷產品。 智能故事機離線語音識別芯片的方案 故事機中置入NRK3301語音
    的頭像 發表于 05-22 09:21 ?527次閱讀

    **十萬級口語識別離線自然說技術,讓智能照明更懂你**

    ,調節燈光的亮度、色溫,定時,場景控制等,實現安全、節能、舒適、高效的照明體驗。 智能照明中,語音控制因其便捷性而備受青睞。然而,傳統的離線語音控制方式存在諸多局限,如支持的詞條
    發表于 04-29 17:09

    離線自然說,無需記固定喚醒詞也能語音控制設備!

    電子發燒友網報道(文/李彎彎)離線語音識別是指不需要依賴網絡,本地設備實現語音識別的過程,通常
    的頭像 發表于 04-29 09:12 ?4571次閱讀
    <b class='flag-5'>離線</b>自然說,無需記固定喚醒詞也能<b class='flag-5'>語音</b>控制設備!

    澎湃微離線語音識別應用實例

    隨著科技的飛速發展,人機交互的方式也不斷演變。鍵盤、觸摸屏之后,語音識別技術正逐漸成為人機交互的新寵。從技術路線上來講語音
    發表于 03-15 14:11 ?433次閱讀
    澎湃微<b class='flag-5'>離線</b><b class='flag-5'>語音</b><b class='flag-5'>識別</b>應用實例
    主站蜘蛛池模板: 欧美日韩免费看| 久久麻豆国产国产AV| 棉签和冰块怎么弄出牛奶视频| 在线观看国产精美视频| 久久综合九色综合国产| 99精品欧美一区二区三区美图| 国产精品第十页| 色www.亚洲免费视频| 国产欧美一区二区三区免费| 亚洲伊人精品| 红尘影院手机在线观看| 2022年国产精品久久久久 | 熟妇的味道HD中文字幕| 菠萝菠萝蜜高清观看在线| 天天干夜夜曰| 国产精品JK白丝AV网站| 伊人久久电影院| 久久精品视频91| 拔萝卜在线高清观看视频| 日本精品久久久久中文字幕2 | 青青草狠狠干| 果冻传媒在线播放 免费观看| 性色AV一区二区三区V视界影院| 久久777国产线看观看精品卜| 伊人久久综合影院| 久久久精品日本一区二区三区| 扒开黑女人p大荫蒂老女人| 亚洲精品高清视频| 青青视频国产色偷偷| 精品日韩视频| 攵女yin乱合集高h| 最新色导航| 欧美午夜理伦三级在线观看| 99视频在线观看免费| 亚洲国产成人精品不卡青青草原 | 欧美特级特黄AAAAA片| 好男人好资源在线观看免费视频| 99精品国产免费观看视频| 亚洲AV精品无码喷水直播间| 青春草久久| 凌馨baby|