【🆓 語音辨識引擎sherpa-onnx CPU上篇】讓您輕鬆體驗語音辨識功能(Docker架設)

更新於 2024/08/04閱讀時間約 6 分鐘

還記得我們之前介紹過「【Google Colab Python系列】 初探Whisper: 來一段Youtube影片進行語音辨識吧!」這套語音辨識引擎, 那為什麼我們又要教這一套? 因為我們也可以將whisper的模型轉換成onnx的格式, 輕鬆移植到各種平台, 且效能更佳。


語音辨識的熱門組件之一kaldi, 相信大部分接觸語音辨識的朋友都應該聽過, 而k2顧名思義就是第二代的全新組件, 在接觸kaldi 1的時期時, 許多的腳本搞的烏煙瘴氣, 而k2大部分都使用python程式語言來撰寫, 程式運作起來更有效率也非常有彈性。


而sherpa則是扮演著辨識引擎的角色, 後來主力都著重於發展sherpa-onnx, 因此我們決定來研究一下sherpa-onnx可以怎麼用。

raw-image


對了, 讓我們架設的如此順利又讓您一鍵啟動的最大功臣莫過於「【Docker 容器化】初探微服務時代的虛擬化技術」, 如果您還不知道Docker, 真心建議您好好的學習一番, 它會讓我們減少許多環境建置上的時間成本。


章節重點

本章我們會以Python為主要的程式語言進行示範, 我們會使用Docker來封裝讓各位的環境盡量一致, 避免外部因素干擾學習, 章節重點如下:

raw-image


環境準備


安裝

這邊我們會用pip直接進行安裝, 至於環境的部份請下載我們的「🎁 懶人包」, 裡面會有相關的docker compose配置檔, 讓您一鍵啟動服務, 並透過簡易的幾行指令就能夠完成整個Demo, 非常適合初入語音辨識朋友!

# 安裝套件
pip install sherpa-onnx

# 檢查是否安裝成功
python3 -c "import sherpa_onnx; print(sherpa_onnx.__file__)"



🔥 因此Dockerfile可以這樣撰寫:

raw-image


如何下載模型?

❗ 在這邊您必須決定好要使用offline還是online的模型, 根據您選用的模型搭配相對應的腳本運行, 這邊我們會選用offline模型並示範檔案上傳語音辨識的過程。

預編譯模型可以來這裡找: https://k2-fsa.github.io/sherpa/onnx/pretrained_models/index.html#sherpa-onnx-pre-trained-models

今天我們選用的是: zrjin/sherpa-onnx-zipformer-multi-zh-hans-2023-9-2 (Chinese), 這個版本的模型相對較小, 因此辨識效果可能不佳, 我們僅拿來Demo使用。

cd models

wget <https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-zipformer-multi-zh-hans-2023-9-2.tar.bz2>
tar xvf sherpa-onnx-zipformer-multi-zh-hans-2023-9-2.tar.bz2
rm sherpa-onnx-zipformer-multi-zh-hans-2023-9-2.tar.bz2



下載sherpa-onnx專案

這一步是要讓我們使用該專案內的範例程式碼來架設Web頁面。

git clone <https://github.com/k2-fsa/sherpa-onnx.git>



如何啟動Web服務?

python sherpa-onnx/python-api-examples/non_streaming_server.py \\
--tokens models/sherpa-onnx-zipformer-multi-zh-hans-2023-9-2/tokens.txt \\
--encoder models/sherpa-onnx-zipformer-multi-zh-hans-2023-9-2/encoder-epoch-20-avg-1.onnx \\
--decoder models/sherpa-onnx-zipformer-multi-zh-hans-2023-9-2/decoder-epoch-20-avg-1.onnx \\
--joiner models/sherpa-onnx-zipformer-multi-zh-hans-2023-9-2/joiner-epoch-20-avg-1.onnx \\
--doc-root sherpa-onnx/python-api-examples/web

打開你的瀏覽器並輸入: http://localhost:6006, 試著切換到「Upload」頁籤, 連線後上傳音檔。


🔥 我們的docker compose配置檔

raw-image


P.S 如果覺得操作起來太過於繁瑣的話, 也歡迎直接下載我們的🎁 懶人包, 讓您省去環境的繁雜安裝過程。


接著我們試著上傳一下範例所提供的音檔

raw-image




關於範例程式碼的重點整理

這邊的核心程式碼在「NonStreamingServer」這個類別, 接收、辨識、回傳三大功能皆在此完成, 因此我們針對這裡的程式碼進行解析。

raw-image


🎁 點我立即領取懶人包

我們的懶人包裡面包含了sherpa-onnx CPU版本的架設, 概念展示的範例程式,請您配合本章節的說明一步步的親自操演過一次, 如此一來才能夠更加明確的熟悉整體流程, 進一步掌握sherpa-onnx語音辨識的使用方法。


結語

本章節教您輕鬆開箱語音辨識組件, 而網路上也提供了各式各樣的預訓練模型, 假設我們只想要使用, 那麼我們可以去下載這些模型來掛載, 那如果我們想要自行訓練或者微調, 接下來的篇章我們也會教您如何去進行這些過程, 當我們學會使用也會訓練模型之後, 最重要的就是資料了, 就像我們把飲水器接好, 也會使用冷水熱水之後, 最重要的還是「水」, 它的重要程度就像我們的「資料」, 要如何大量的蒐集這些資料及管控品質就是另外一門學問了, 關於資料處理, 我們也推薦您閱讀以下幾個篇章:

參考資源

avatar-img
116會員
260內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
阿Han的沙龍 的其他內容
KSQL引擎, 串流形式的SQL? 聽了應該霧煞煞吧! 想像一下傳統的SQL, 是不是一個指令一個動作, 每發送一個指令之後就必須等到查詢/寫入…動作皆完成之後才回應, 然而在Streaming的應用上這顯然不太可行, 每分每秒都有資料流入的情境下, 資料的狀態都在變化, 假設我們一個指令一個動作,
為什麼會有Schema Registry的出現? 因為Kafka的零拷貝原則, 也就是kafka本身並不會去碰觸到訊息也不進行資料驗證, 而是bypass的傳送, 預設都以位元組來傳輸資料會比較有效率, 但位元組誰看得懂啊...。 加上Kafka的特性是生產者與消費者並不能直接溝通, 因
連接器故名思議就是兩個系統之間的橋樑, 而Kafka Connect正是扮演著這樣的角色, 如圖上, 我們可以透過Kafka Connect將SQL的資料導出到Kafka並導入到MySQL。 豐富的Plugin Confluent Hub提供了各式各樣的外掛套件, 包括了MongoDB、My
我們在「【🎓 Python的深度問答集】torchaudio 對部分段落進行音訊解碼」有分享到如何對一包包的封包進行音訊解碼, 但隨著音檔越大, 最終解碼的速度會越來越慢, 而這並非串流的本意, 串流應該就像水管一樣, 收到多少資料就運算多少量, 並不會隨著累積的容量越大而導致效能下降。 但實際
為什麼要用Docker安裝? Docker是一個容器化平台, 就類似於我們早期虛擬機的VMWare、Virtual Box…等, 虛擬機平台一般, 只是面向的是伺服端, 供企業快速、簡單、輕量的佈署開發完成的程式軟體, 並將相關的環境依賴皆封裝成一包所謂的映像檔(image), 透過這樣的方式減少
訊息的即時傳遞已然成為現代社會的趨勢了, 而扮演中樞平台的系統架構功能也漸趨複雜完整, Kafka是一個事件流平台, 正好滿足串流時代之下的即時訊息傳遞架構, 因此我們有必要深入來學習這套事件流平台, 不論是自動化、金融交易、IOT、物流…皆離不開即時的需求, 所以就讓我們蹲好馬步來好好的學習一
KSQL引擎, 串流形式的SQL? 聽了應該霧煞煞吧! 想像一下傳統的SQL, 是不是一個指令一個動作, 每發送一個指令之後就必須等到查詢/寫入…動作皆完成之後才回應, 然而在Streaming的應用上這顯然不太可行, 每分每秒都有資料流入的情境下, 資料的狀態都在變化, 假設我們一個指令一個動作,
為什麼會有Schema Registry的出現? 因為Kafka的零拷貝原則, 也就是kafka本身並不會去碰觸到訊息也不進行資料驗證, 而是bypass的傳送, 預設都以位元組來傳輸資料會比較有效率, 但位元組誰看得懂啊...。 加上Kafka的特性是生產者與消費者並不能直接溝通, 因
連接器故名思議就是兩個系統之間的橋樑, 而Kafka Connect正是扮演著這樣的角色, 如圖上, 我們可以透過Kafka Connect將SQL的資料導出到Kafka並導入到MySQL。 豐富的Plugin Confluent Hub提供了各式各樣的外掛套件, 包括了MongoDB、My
我們在「【🎓 Python的深度問答集】torchaudio 對部分段落進行音訊解碼」有分享到如何對一包包的封包進行音訊解碼, 但隨著音檔越大, 最終解碼的速度會越來越慢, 而這並非串流的本意, 串流應該就像水管一樣, 收到多少資料就運算多少量, 並不會隨著累積的容量越大而導致效能下降。 但實際
為什麼要用Docker安裝? Docker是一個容器化平台, 就類似於我們早期虛擬機的VMWare、Virtual Box…等, 虛擬機平台一般, 只是面向的是伺服端, 供企業快速、簡單、輕量的佈署開發完成的程式軟體, 並將相關的環境依賴皆封裝成一包所謂的映像檔(image), 透過這樣的方式減少
訊息的即時傳遞已然成為現代社會的趨勢了, 而扮演中樞平台的系統架構功能也漸趨複雜完整, Kafka是一個事件流平台, 正好滿足串流時代之下的即時訊息傳遞架構, 因此我們有必要深入來學習這套事件流平台, 不論是自動化、金融交易、IOT、物流…皆離不開即時的需求, 所以就讓我們蹲好馬步來好好的學習一
你可能也想看
Google News 追蹤
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
Thumbnail
NVIDIA的新目標是成為支援企業開發AI應用程式的「AI晶圓代工」,提供技術、專業知識和基礎設施,幫助實現AI應用。具體而言,NVIDIA將提供GPU、自主CPU「Grace」、超級計算機及其硬體,還有軟體和工具,以滿足客戶需求。
Thumbnail
資產運用公司在投資判斷和機會識別中廣泛運用人工智慧(AI)。
在這個語音辨識技術快速發展的時代, 如何有效利用這項技術來提升我們的創作和學習效率成為了一個值得探討的話題。 以下是我對於利用語音辨識技術進行有效筆記和創作的一些思考和策略。 ▋策略1 - 高效利用語音辨識轉換內容 利用語音辨識技術可以迅速捕捉我們的想法和語言, 進而將其轉換為文字。 這
Thumbnail
對於想要更有效地管理時間的人來說,這篇文章是一個寶貴的資源。 透過以下的策略,你可以避免在不必要的信息上消耗時間,並將其轉化為更有價值的生產力。 語音辨識不僅可以解放你的雙手,更可以成為你第二大腦的有效工具。
Thumbnail
對於熱衷寫作但時常感到創作瓶頸的你,這篇文章將是一線曙光。 透過語音辨識和GPT的輔助,我成功突破創作的瓶頸,提高了寫作的效率和質量。 這樣的工作流程不僅節省了我大量的時間,更加速了我的創作過程。
Thumbnail
不管你是創作者和學習者,都應該試試看用語音辨識來協助你學得更好與做得更多! 你需要的工具有 手機上能語音辨識的軟體 (我推薦DayOne) 一部想要深入學習的影片 (看看自己今天想學什麼) 一個計時器(我都用iPhone內建的計時器) 接下來跟著這3個步驟! 步驟1 - 高效率觀看影片,就是看3分鐘
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
Thumbnail
NVIDIA的新目標是成為支援企業開發AI應用程式的「AI晶圓代工」,提供技術、專業知識和基礎設施,幫助實現AI應用。具體而言,NVIDIA將提供GPU、自主CPU「Grace」、超級計算機及其硬體,還有軟體和工具,以滿足客戶需求。
Thumbnail
資產運用公司在投資判斷和機會識別中廣泛運用人工智慧(AI)。
在這個語音辨識技術快速發展的時代, 如何有效利用這項技術來提升我們的創作和學習效率成為了一個值得探討的話題。 以下是我對於利用語音辨識技術進行有效筆記和創作的一些思考和策略。 ▋策略1 - 高效利用語音辨識轉換內容 利用語音辨識技術可以迅速捕捉我們的想法和語言, 進而將其轉換為文字。 這
Thumbnail
對於想要更有效地管理時間的人來說,這篇文章是一個寶貴的資源。 透過以下的策略,你可以避免在不必要的信息上消耗時間,並將其轉化為更有價值的生產力。 語音辨識不僅可以解放你的雙手,更可以成為你第二大腦的有效工具。
Thumbnail
對於熱衷寫作但時常感到創作瓶頸的你,這篇文章將是一線曙光。 透過語音辨識和GPT的輔助,我成功突破創作的瓶頸,提高了寫作的效率和質量。 這樣的工作流程不僅節省了我大量的時間,更加速了我的創作過程。
Thumbnail
不管你是創作者和學習者,都應該試試看用語音辨識來協助你學得更好與做得更多! 你需要的工具有 手機上能語音辨識的軟體 (我推薦DayOne) 一部想要深入學習的影片 (看看自己今天想學什麼) 一個計時器(我都用iPhone內建的計時器) 接下來跟著這3個步驟! 步驟1 - 高效率觀看影片,就是看3分鐘