前言
摘自百度百科
語音識別技術(shù),也被稱為自動語音識別(Automatic Speech Recognition,ASR),其目標(biāo)是將人類的語音中的詞匯內(nèi)容轉(zhuǎn)換為計算機可讀的輸入,例如按鍵、二進制編碼或者字符序列。與說話人識別及說話人確認不同,后者嘗試識別或確認發(fā)出語音的說話人而非其中所包含的詞匯內(nèi)容。
語音識別是深度學(xué)習(xí)領(lǐng)域之一, 在 github 上也有很多項目實現(xiàn) ASR, 支持中文 ASR 的部分項目如下,下面會演示簡單使用
- https://github.com/PaddlePaddle/PaddleSpeech
- https://github.com/nl8590687/ASRT_SpeechRecognition
- https://github.com/nobody132/masr
- https://github.com/espnet/espnet
- https://github.com/wenet-e2e/wenet
- https://github.com/mozilla/DeepSpeech
一、PaddleSpeech
PaddleSpeech 是基于飛槳 PaddlePaddle 的語音方向的開源模型庫,用于語音和音頻中的各種關(guān)鍵任務(wù)的開發(fā),包含大量基于深度學(xué)習(xí)前沿和有影響力的模型。
PaddleSpeech 榮獲 NAACL2022 Best Demo Award, 請訪問 Arxiv 論文。
1.1 安裝
根據(jù)官方文檔安裝即可:https://github.com/PaddlePaddle/PaddleSpeech/blob/develop/README_cn.md#%E5%AE%89%E8%A3%85
官方強烈建議用戶在 Linux 環(huán)境下,3.7 以上版本的 python 上安裝 PaddleSpeech。
但是我電腦是 windows , 而且 python 版本為 3.6.5。選擇在windows 下安裝 python 3.7.0 版本:https://www.python.org/downloads/windows/,安裝過程中報以下錯誤
pip install paddlespeech
問題一:paddlespeech-ctcdecoders 版本錯誤
Could not find a version that satisfies the requirement paddlespeech-ctcdecoders (from paddlespeech) (from versions: )
No matching distribution found for paddlespeech-ctcdecoders (from paddlespeech)
發(fā)現(xiàn) paddlespeech-ctcdecoders 并沒有 windows 版本,而且發(fā)現(xiàn)已經(jīng)有人編譯windows 版本了,初次編譯paddlespeech-ctcdecoders的windows版本,不過官方提示:paddlespeech-ctcdecoders 沒有安裝成功不要緊,這個包不是必須的。
問題二:gbk 編碼錯誤
UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 5365: illegal multibyte sequence
這個問題等我再次運行就消失了
1.2 運行
報找不到文件錯誤:
FileNotFoundError: [WinError 2] 系統(tǒng)找不到指定的文件。
打開 Python\Python37\lib\subprocess.py 文件,在684行將 shell=False 改為 shell=True
_child_created = False # Set here since __del__ checks it
def __init__(self, args, bufsize=-1, executable=None,
stdin=None, stdout=None, stderr=None,
preexec_fn=None, close_fds=True,
shell=True, cwd=None, env=None, universal_newlines=None,
startupinfo=None, creationflags=0,
restore_signals=True, start_new_session=False,
pass_fds=(), *, encoding=None, errors=None, text=None):
使用官方的例子測試:
paddlespeech asr --lang zh --input C:\Users\supre\Desktop\sound\PaddleSpeech-develop\zh.wav
使用自己錄音的兩個例子測試,發(fā)現(xiàn)很精確。
1.3 更多功能
除了語音識別,還支持更多功能
- 聲音分類
paddlespeech cls --input input.wav
- 聲紋識別
paddlespeech vector --task spk --input input_16k.wav
- 語音翻譯(英-中)(暫不支持 Windows 系統(tǒng))
paddlespeech st --input input_16k.wav
- 語音合成
paddlespeech tts --input "你好,歡迎使用百度飛槳深度學(xué)習(xí)框架!" --output output.wav
發(fā)現(xiàn) “你好,aabond, 歡迎使用百度飛槳” 其中 aabond 并沒有語音,猜測并不能合成英文,可能需要提供其它參數(shù)
- 標(biāo)點恢復(fù)
paddlespeech text --task punc --input 今天的天氣真不錯啊你下午有空嗎我想約你一起去吃飯
二、ASRT
ASRT 是一個基于深度學(xué)習(xí)的中文語音識別系統(tǒng),使用 tensorFlow.keras 基于深度卷積神經(jīng)網(wǎng)絡(luò)和長短時記憶神經(jīng)網(wǎng)絡(luò)、注意力機制以及CTC 實現(xiàn)。
2.1 安裝
下載服務(wù)端,安裝依賴
$ pip install tensorflow==2.5.2
$ pip install wave
$ pip install matplotlib
$ pip install requests
$ pip install scipy
$ pip install flask
$ pip install waitress
下載客戶端
2.2 運行
python asrserver_http.py
使用百度demo 作為例子,能夠正確顯示
使用自己錄音作為例子,“說話的藝術(shù)”被識別為“上”,并不能正確顯示,難道是因為我說話太快?應(yīng)該需要訓(xùn)練數(shù)據(jù)
還可以實時語音識別,發(fā)現(xiàn)精確度一般
三、MASR
MASR 是一個基于端到端的深度神經(jīng)網(wǎng)絡(luò)的中文普通話語音識別項目.
MASR 使用的是門控卷積神經(jīng)網(wǎng)絡(luò)(Gated Convolutional Network),網(wǎng)絡(luò)結(jié)構(gòu)類似于 Facebook 在2016年提出的 Wav2letter 。但是使用的激活函數(shù)不是 ReLU
或者是 HardTanh
,而是GLU
(門控線性單元)。因此稱作門控卷積網(wǎng)絡(luò)。根據(jù)我的實驗,使用GLU
的收斂速度比 HardTanh
要快。如果你想要研究卷積網(wǎng)絡(luò)用于語音識別的效果,這個項目可以作為一個參考。
3.1 安裝
下載源碼,下載預(yù)訓(xùn)練模型數(shù)據(jù),在源碼目錄下新建一個 pretrained 目錄, 并將模型文件放入其中
3.2 運行
python examples/demo-record-recognize.py
識別結(jié)果:
“說話的藝術(shù)” 識別為 “說化和一數(shù)”
“只因你太美” 識別為 “只因里派云”
四、ESPnet
ESPnet:端到端語音處理工具包,涵蓋了端到端語音識別、文本到語音、語音翻譯、語音增強、說話者二值化、口語理解等。ESPnet 使用 pytorch 作為深度學(xué)習(xí)引擎,并遵循 Kaldi 風(fēng)格的數(shù)據(jù)處理、特征提取/格式和配方,為各種語音處理實驗提供一個完整的設(shè)置。
4.1 安裝
pip install espnet
pip install espnet_model_zoo
pip install kenlm
4.2 運行
運行下面代碼,可能下載速度太慢,可手動下載中文模型數(shù)據(jù),放在Python安裝路徑 Python36\Lib\site-packages\espnet_model_zoo\a1dd2b872b48358daa6e136d4a5ab08b
下面,加快速度
import soundfile
from espnet_model_zoo.downloader import ModelDownloader
from espnet2.bin.asr_inference import Speech2Text
d = ModelDownloader()
speech2text = Speech2Text(
**d.download_and_unpack("kamo-naoyuki/aishell_conformer"),
# Decoding parameters are not included in the model file
maxlenratio=0.0,
minlenratio=0.0,
beam_size=20,
ctc_weight=0.3,
lm_weight=0.5,
penalty=0.0,
nbest=1
)
audio, rate = soundfile.read("zh.wav")
nbests = speech2text(audio)
text, *_ = nbests[0]
print(text)
可發(fā)現(xiàn)百度demo 能夠正確識別
測試自己錄音demo, “說話的藝術(shù)” 識別為 “說話的約束”
五、WeNet
Wenet是出門問問語音團隊聯(lián)合西工大語音實驗室開源的一款面向工業(yè)落地應(yīng)用的語音識別工具包,該工具用一套簡潔的方案提供了語音識別從訓(xùn)練到部署的一條龍服務(wù),其主要特點如下:
- 使用 conformer 網(wǎng)絡(luò)結(jié)構(gòu)和 CTC/attention loss 聯(lián)合優(yōu)化方法,具有業(yè)界一流的識別效果。
- 提供云上和端上直接部署的方案,最小化模型訓(xùn)練和產(chǎn)品落地之間的工程工作。
- 框架簡潔,模型訓(xùn)練部分完全基于pytorch生態(tài),不依賴于kaldi等安裝復(fù)雜的工具。
- 詳細的注釋和文檔,十分適合用于學(xué)習(xí)端到端語音識別的基礎(chǔ)知識和實現(xiàn)細節(jié)。
5.1 安裝
pip install wenetruntime
5.2 運行
import sys
import wenetruntime as wenet
wav_file = sys.argv[1]
decoder = wenet.Decoder(lang='chs')
ans = decoder.decode_wav(wav_file)
print(ans)
如果下載文件太慢,可通過手動下載 文件到 C:\Users\supre\.wenet\chs 目錄下,記住要解壓 chs.tar.gz,而不要再解壓 final.zip。
使用百度demo測試,很精確
使用自己錄音聲音測試,報錯如下:
應(yīng)該是只能輸入單聲道,而我錄音的是雙聲道。解決方法:使用 Audacity 錄音,并將聲道改為單聲道,并將采樣頻率修改為 16000 HZ,編碼器默認不變,否則會出現(xiàn)下面的錯誤
最終結(jié)果,還是很精確的。
六、DeepSpeech
DeepSpech 是一個開源的語音到文本( Speech-To-Text, STT )引擎,使用了基于百度深度語音研究論文的機器學(xué)習(xí)技術(shù)訓(xùn)練的模型。深度語音項目使用谷歌的Tensorflow,使實現(xiàn)更容易。
6.1 安裝
pip install deepspeech
6.2 運行
下載中文模型:deepspeech-0.9.3-models-zh-CN.pbmm,deepspeech-0.9.3-models-zh-CN.scorer
deepspeech --model deepspeech-0.9.3-models-zh-CN.pbmm --scorer deepspeech-0.9.3-models-zh-CN.scorer --audio zh.wav
使用 百度 demo 測試,有誤差
使用自己錄音,“說話的藝術(shù)” 識別為 “蘭花的一杯”
使用 deepspeech 自帶數(shù)據(jù)測試 “他有兩個哥哥” 識別為 “會有兩個哥哥”文章來源:http://www.zghlxwxcb.cn/news/detail-522483.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-522483.html
參考
- import paddle 遇到錯誤
- 教你如何使用ASRT部署中文語音識別API服務(wù)器
- Wenet - 面向工業(yè)落地的E2E語音識別工具
到了這里,關(guān)于6款支持中文語音識別開源軟件的簡單使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!