|
最近因?qū)W習(xí)任務(wù),對(duì)語(yǔ)音識(shí)別需要了解,所以現(xiàn)在就把一些學(xué)習(xí)過(guò)程遇到的問(wèn)題解決方法分享給大家。首先pyhon提供了許多語(yǔ)音識(shí)別庫(kù),大致包含:

上述語(yǔ)音識(shí)別軟件庫(kù)各個(gè)之間的側(cè)重點(diǎn)不同,如:谷歌云語(yǔ)音側(cè)重語(yǔ)音向文本轉(zhuǎn)換,又如wit與apiai還提供超出基本語(yǔ)音識(shí)別的內(nèi)置功能(識(shí)別講話者意圖的自然語(yǔ)言處理功能)。由于我僅僅是做簡(jiǎn)單的中文語(yǔ)音識(shí)別,所以使用的是SpeechRcognition這個(gè)語(yǔ)音識(shí)別庫(kù)。
SpeechRcognition的特點(diǎn)優(yōu)勢(shì)
- 滿足幾種主流語(yǔ)音 API ,靈活性高;
- Google Web Speech API 支持硬編碼到 SpeechRecognition 庫(kù)中的默認(rèn) API 密鑰,無(wú)需注冊(cè)就可用;
- SpeechRecognition無(wú)需構(gòu)建訪問(wèn)麥克風(fēng)和從頭開(kāi)始處理音頻文件的腳本, 只需幾分鐘即可自動(dòng)完成音頻輸入、檢索并運(yùn)行。因此易用性很高。
怎么使用SpeechRcognition?
1. 安裝SpeechRcognition
下載地址:https:///project/SpeechRecognition/
安裝命令: pip install SpeechRcognition
不過(guò)僅僅安裝這個(gè)是不夠的,還需要安裝對(duì)應(yīng)需要的資源庫(kù),如下圖:

2. SpeechRcognition的識(shí)別類(器)

以上七個(gè)中只有 recognition_sphinx()可與CMU Sphinx 引擎脫機(jī)工作, 其他六個(gè)都需要連接互聯(lián)網(wǎng)。另外,SpeechRecognition 附帶 Google Web Speech API 的默認(rèn) API 密鑰,可直接使用它。其他六個(gè) API 都需要使用 API 密鑰或用戶名/密碼組合進(jìn)行身份驗(yàn)證。
3. 下面進(jìn)行中文語(yǔ)音識(shí)別
我在這里使用的是recognize_sphinx()語(yǔ)音識(shí)別器,它可以脫機(jī)工作,但是必須安裝pocketsphinx庫(kù)(詳細(xì)安裝過(guò)程見(jiàn)https://blog.csdn.net/zouxy09/article/details/7942784),若要進(jìn)行中文識(shí)別,還需要兩樣?xùn)|西。一、語(yǔ)音文件(SpeechRecognition對(duì)文件格式有要求);二、中文聲學(xué)模型、語(yǔ)言模型和字典文件,下面進(jìn)行詳細(xì)描述:
SpeechRecognition支持語(yǔ)音文件類型
WAV: 必須是 PCM/LPCM 格式
AIFF
AIFF-C
FLAC: 必須是初始 FLAC 格式;OGG-FLAC 格式不可用
pocketsphinx需要安裝的中文語(yǔ)言、聲學(xué)模型
下載地址:http:///projects/cmusphinx/files/Acoustic%20and%20Language%20Models/

安裝步驟
- 下載cmusphinx-zh-cn-5.2.tar.gz并解壓


- 在python安裝目錄下找到Lib\site-packages\speech_recognition

點(diǎn)擊進(jìn)入pocketsphinx-data文件夾,并新建文件夾zh-CN

在這個(gè)文件夾中添加進(jìn)入剛剛解壓的文件,需要注意:把解壓出來(lái)的zh_cn.cd_cont_5000文件夾重命名為acoustic-model、zh_cn.lm.bin命名為language-model.lm.bin、zh_cn.dic中dic改為dict格式。

中文識(shí)別實(shí)際例子
1. 實(shí)際的代碼程序
# -*- coding: utf-8 -*-
# /usr/bin/python
# 作者:kimicr
# 實(shí)驗(yàn)日期:20190820
# Python版本:3.6.3
import speech_recognition as sr
r = sr.Recognizer() #調(diào)用識(shí)別器
test = sr.AudioFile("C:\\Users\cc\Desktop\\test1.flac") #導(dǎo)入語(yǔ)音文件
with test as source:
audio = r.record(source)
type(audio)
c=r.recognize_sphinx(audio, language='zh-cn') #識(shí)別輸出
print(c)
輸出的結(jié)果:由于語(yǔ)音自己錄的不好,所以識(shí)別的不是很高??梢哉依佣嘣囋?br>

2. 程序中可能出現(xiàn)的問(wèn)題
一般出現(xiàn)問(wèn)題在于這一行代碼:test = sr.AudioFile(“C:\Users\file\Desktop\test1.flac”) #導(dǎo)入語(yǔ)音文件。出現(xiàn)的問(wèn)題為:

這是由于該文件地址是直接通過(guò)打開(kāi)文件屬性方式,摘到文件路徑,復(fù)制過(guò)來(lái)的,問(wèn)題出現(xiàn)是可能里面包含有了非法字符,解決辦法就是重新手動(dòng)輸入這一行代碼(特別是文件路徑)
|