python使用vosk進行中文語音識別

来源:https://www.cnblogs.com/MikeZhang/archive/2022/05/21/python-vosk-test-20220521.html
-Advertisement-
Play Games

操作系統:Windows10 Python版本:3.9.2 vosk是一個離線開源語音識別工具,它可以識別16種語言,包括中文。 這裡記錄下使用vosk進行中文識別的過程,以便後續查閱。 vosk地址:https://alphacephei.com/vosk/ 使用vosk-server進行語音識別 ...


操作系統:Windows10

Python版本:3.9.2

vosk是一個離線開源語音識別工具,它可以識別16種語言,包括中文。

這裡記錄下使用vosk進行中文識別的過程,以便後續查閱。 

vosk地址:https://alphacephei.com/vosk/

使用vosk-server進行語音識別

 使用docker啟動vosk服務

1、獲取vosk

[root@host32 ~]# docker search alphacep
NAME                             DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
alphacep/kaldi-ru                Russian websocket server for streaming speec…   11
alphacep/kaldi-en                English websocket server for streaming speec…   10
alphacep/kaldi-vosk-server       Websocket-based server for speech recognitio…   8
alphacep/kaldi-de                German websocket server for streaming speech…   4
alphacep/kaldi-cn                Chinese websocket server for streaming speec…   3
alphacep/kaldi-manylinux         Helper image to build python modules for pypi   3
alphacep/kaldi-en-gpu            Vosk GPU websocket server for fast processin…   2
alphacep/kaldi-en-in             Streaming speech recognition based on Kaldi …   1
alphacep/kaldi-grpc-en           Speech recognition gRPC server based on Kald…   0
alphacep/kaldi-es                                                                0
alphacep/dockcross-linux-armv7                                                   0
alphacep/vosk-unimrcp                                                            0
alphacep/kaldi-fr                French websocket server for streaming speech…   0
alphacep/kaldi-vosk-server-gpu   Vosk GPU websocket server for fast processin…   0
alphacep/kaldi-en-spk                                                            0
uburuntu/kaldi-vosk-server       https://github.com/alphacep/vosk-server         0
gabrielbg99/kaldi                ARM64 (Cortex-A72) version of https://hub.do…   0
gabrielbg99/kaldi-en             ARM64 (Cortex-A72) version of https://hub.do…   0
[root@host32 ~]# docker pull alphacep/kaldi-cn

2、啟動vosk

獲取docker鏡像:

docker pull alphacep/kaldi-cn:latest

啟動服務:

docker run -d -p 2700:2700 alphacep/kaldi-cn:latest

使用vosk-server測試

1、下載vosk-server源代碼

命令如下:

git clone https://github.com/alphacep/vosk-server

2、測試

test2.wav內容:

自然語言理解和生成是一個多方面問題,我們對它可能也只是部分理解。

cd vosk-server/websocket
./test.py test2.wav

識別效果如下:

 註意:語音文件test1.wav的格式必須8khz 16bit mono PCM(8000採樣率,16位採樣精度,單聲道,pcm)。

可以在屏幕上看到伺服器返回的識別結果,結果是json格式。

如果提示如下錯誤:

AttributeError: module 'asyncio' has no attribute 'run'

請使用python 3.7以上的版本。

python使用vosk-server進行中文語音識別的演示視頻,可從如下途徑獲取:

關註微信公眾號(聊聊博文,文末可掃碼)後回覆 202205210101 獲取。

使用vosk-api進行語音識別

安裝vosk

命令如下:

pip install vosk

 

下載示例代碼

獲取示例代碼:

git clone https://github.com/alphacep/vosk-api.git

目錄結構如下:

 

 下載預編譯的模型文件

下載地址:https://alphacephei.com/vosk/models

 

 下載模型文件:

wget -c https://alphacephei.com/vosk/models/vosk-model-small-cn-0.22.zip
wget -c https://alphacephei.com/vosk/models/vosk-model-cn-0.15.zip
wget -c https://alphacephei.com/vosk/models/vosk-model-cn-kaldi-multicn-0.15.zip

如果下載過慢,可從如下鏈接獲取:

https://pan.baidu.com/s/1NlmSejpFmUygcCgL4hvGGA

關註微信公眾號(聊聊博文,文末可掃碼)後回覆 2022052101 獲取提取碼。

語音識別測試

1、修改測試代碼

python示例代碼路徑:vosk-api\python\example

編輯 test_simple.py 文件,註釋掉如下代碼:

rec.SetPartialWords(True)

要不會報如下錯誤:

AttributeError: 'KaldiRecognizer' object has no attribute 'SetPartialWords'

2、配置模型文件

解壓 vosk-model-cn-0.15.zip 文件,並將解壓後的文件夾名稱修改為 model ,目錄結構如下:

 

3、測試語音識別

 test2.wav內容:

 自然語言理解和生成是一個多方面問題,我們對它可能也只是部分理解。

 識別效果如下:

 

 

 python使用vosk-server進行中文語音識別的演示視頻,可從如下途徑獲取:

關註微信公眾號(聊聊博文,文末可掃碼)後回覆 202205210102 獲取。

本文涉及源碼及模型,可以從百度網盤獲取:https://pan.baidu.com/s/1NlmSejpFmUygcCgL4hvGGA 

關註微信公眾號(聊聊博文,文末可掃碼)後回覆 2022052101 獲取提取碼。 

微信公眾號:

  • E-Mail : [email protected]
  • 轉載請註明出處,謝謝!
    您的分享是我們最大的動力!

    -Advertisement-
    Play Games
    更多相關文章
    • /* 下述代碼近供參考 水仙花數是指一個3位數,它的每個位上的數字3次冪之和等於它本身。 例如:(1的3次方+5的3次方+3的3次方=153),請列印所有的水仙花數。 */ // 第一種方式 for(var a=0;a<10;a++) { for(var b=0;b<10;b++) { for( v ...
    • in操作符作用: 遍歷類型 基本用法 type roles = "tester" | "developer" | "manager"; const staffCount: { [k in roles]: number } = { tester: 100, developer: 200, manage ...
    • 索引:對象或數組的對應位置的名字 數組的索引就是 number 類型的 0,1,2,3... 對象的索引就是 string 類型的屬性名 數字索引簽名:通過定義介面用來約束數組 type numberIndex{ [index:number]:string } const testArray:num ...
    • DRY原則 DRY 原則,它的英文描述為:Don’t Repeat Yourself。中文直譯為:不要重覆自己。也可以理解為:不要寫重覆的代碼。 我們從實現邏輯重覆、功能語義重覆和代碼執行重覆,這三種代碼重覆來說明DRY原則。 實現邏輯重覆 例如有兩個函數isValidUserName() 和 is ...
    • 從演化歷史看大型網站架構 楊傳偉 (石家莊鐵道大學信息科學與技術學院,河北省,石家莊市,050043) 摘 要:本文以大型網站系統的特點、大型網站架構演化發展歷程以及大數據與高併發為切入和論述點,由淺入深、由簡到繁地對大型網站架構設計展開敘述,首先通述其特點,之後介紹大型網站架構的歷史發展歷程,從其 ...
    • 一些必須提前知道的概念 patition kafka日誌文件是以patition在物理存儲上分割的 是topic物理上的分組,一個topic可以分為多個partition,每個partition是一個有序的隊列 是以文件夾的形式存儲在具體Broker本機上 LEO 表示每個partition的log ...
    • MVC架構設計淺析 楊傳偉 (石家莊鐵道大學信息科學與技術學院,河北省,石家莊市,050043) 摘 要:本文以圖書管理系統為案例(當前主流框架SpringMVC的原理來分析MVC的設計理念等),深入淺出地分析常用的WEB設計模式MVC。將從MVC的歷史、MVC每一層的作用,MVC能為我們帶來什麼好 ...
    • 單例模式 單例模式一般用於全局只需要一個唯一的實例的情況。 例如說,日誌讀寫的功能,一般來說全局只需一個日誌讀寫實例,然後其他的類實例去獲取這個實例進行日誌讀寫。 又例如說,有一個協作的功能,需要各個模塊發送給主控制器,主控制器需要做成單例,這樣子模塊之間操作控制器就是操作實際主控制器的內容。 怎麼 ...
    一周排行
      -Advertisement-
      Play Games
    • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
    • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
    • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
    • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
    • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
    • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
    • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
    • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
    • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
    • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...