欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Linux下利用python實(shí)現(xiàn)語音識別詳細(xì)教程

 更新時間:2023年03月31日 14:06:46   作者:萬里羊  
早期語音識別系統(tǒng)僅能識別單個講話者以及只有約十幾個單詞的詞匯量?,F(xiàn)代語音識別系統(tǒng)已經(jīng)取得了很大進(jìn)步,對于 Python 使用者而言,一些語音識別服務(wù)可通過 API 在線使用,且其中大部分也提供了 Python SDK,感興趣的小伙伴可以參考閱讀

語音識別工作原理簡介

語音識別源于 20 世紀(jì) 50 年代早期在貝爾實(shí)驗(yàn)室所做的研究。早期語音識別系統(tǒng)僅能識別單個講話者以及只有約十幾個單詞的詞匯量。現(xiàn)代語音識別系統(tǒng)已經(jīng)取得了很大進(jìn)步,可以識別多個講話者,并且擁有識別多種語言的龐大詞匯表。
語音識別的首要部分當(dāng)然是語音。通過麥克風(fēng),語音便從物理聲音被轉(zhuǎn)換為電信號,然后通過模數(shù)轉(zhuǎn)換器轉(zhuǎn)換為數(shù)據(jù)。一旦被數(shù)字化,就可適用若干種模型,將音頻轉(zhuǎn)錄為文本。
大多數(shù)現(xiàn)代語音識別系統(tǒng)都依賴于隱馬爾可夫模型(HMM)。其工作原理為:語音信號在非常短的時間尺度上(比如 10 毫秒)可被近似為靜止過程,即一個其統(tǒng)計(jì)特性不隨時間變化的過程。
許多現(xiàn)代語音識別系統(tǒng)會在 HMM 識別之前使用神經(jīng)網(wǎng)絡(luò),通過特征變換和降維的技術(shù)來簡化語音信號。也可以使用語音活動檢測器(VAD)將音頻信號減少到可能僅包含語音的部分。
幸運(yùn)的是,對于 Python 使用者而言,一些語音識別服務(wù)可通過 API 在線使用,且其中大部分也提供了 Python SDK。

選擇合適的python語音識別包

PyPI中有一些現(xiàn)成的語音識別軟件包。其中包括:
•apiai
•google-cloud-speech
•pocketsphinx
•SpeechRcognition
•watson-developer-cloud
•wit
一些軟件包(如 wit 和 apiai )提供了一些超出基本語音識別的內(nèi)置功能,如識別講話者意圖的自然語言處理功能。其他軟件包,如谷歌云語音,則專注于語音向文本的轉(zhuǎn)換。
其中,SpeechRecognition 就因便于使用脫穎而出。
識別語音需要輸入音頻,而在 SpeechRecognition 中檢索音頻輸入是非常簡單的,它無需構(gòu)建訪問麥克風(fēng)和從頭開始處理音頻文件的腳本,只需幾分鐘即可自動完成檢索并運(yùn)行。

安裝SpeechRecognition

SpeechRecognition 兼容 Python2.6 , 2.7 和 3.3+,但若在 Python 2 中使用還需要一些額外的安裝步驟。大家可使用 pip 命令從終端安裝 SpeechRecognition:pip3 install SpeechRecognition
安裝過程中可能會出現(xiàn)一大片紅色字體提示安裝錯誤!我在另一篇博客中有解決方法(http://www.dbjr.com.cn/article/279677.htm

安裝完成后可以打開解釋器窗口進(jìn)行驗(yàn)證安裝:

注:不要關(guān)閉此會話,在后幾個步驟中你將要使用它。
若處理現(xiàn)有的音頻文件,只需直接調(diào)用 SpeechRecognition ,注意具體的用例的一些依賴關(guān)系。同時注意,安裝 PyAudio 包來獲取麥克風(fēng)輸入

識別器類

SpeechRecognition 的核心就是識別器類。
Recognizer API 主要目是識別語音,每個 API 都有多種設(shè)置和功能來識別音頻源的語音,這里我選擇的是recognize_sphinx(): CMU Sphinx - requires installing PocketSphinx(支持離線的語音識別
那么我們就需要通過pip命令來安裝PocketSphinx,在安裝過程中也容易出現(xiàn)一大串紅色字體的錯誤。因?yàn)椴┲饔⒄Z不太好,具體啥錯誤不知道。直接上解決方法吧!在我的另一篇文章有介紹:
http://www.dbjr.com.cn/article/279684.htm

音頻文件的使用

下載相關(guān)的音頻文件保存到特定的目錄(博主直接保存到ubuntu桌面):
鏈接:https://pan.baidu.com/s/1oWG1A6JnjpeT_8DhEpoZzw
提取碼:sf73
注意:
AudioFile 類可以通過音頻文件的路徑進(jìn)行初始化,并提供用于讀取和處理文件內(nèi)容的上下文管理器界面。
SpeechRecognition 目前支持的文件類型有:

  • WAV: 必須是 PCM/LPCM 格式
  • AIFF
  • AIFF-CFLAC: 必須是初始 FLAC 格式;OGG-FLAC 格式不可用

英文的語音識別

在完成以上基礎(chǔ)工作以后,就可以進(jìn)行英文的語音識別了。
(1)打開終端
(2)進(jìn)入語音測試文件所在目錄(博主的是 桌面)
(3)打開python解釋器
(4)按照下圖輸入相關(guān)命令

最后就可以看到語音轉(zhuǎn)文字的內(nèi)容(this they’ll smell …),其實(shí)效果還是很不錯的!因?yàn)槭怯⑽?,并且沒有噪音。

噪音對語音識別的影響

噪聲在現(xiàn)實(shí)世界中確實(shí)存在,所有錄音都有一定程度的噪聲,而未經(jīng)處理的噪音可能會破壞語音識別應(yīng)用程序的準(zhǔn)確性。
要了解噪聲如何影響語音識別,請下載 “jackhammer.wav”(鏈接:https://pan.baidu.com/s/1AvGacwXeiSfMwFUTKer3iA
提取碼:3pj7)
通過嘗試轉(zhuǎn)錄效果并不好,我們可以通過嘗試調(diào)用 Recognizer 類的adjust_for_ambient_noise()命令。

麥克風(fēng)的使用

若要使用 SpeechRecognizer 訪問麥克風(fēng)則必須安裝 PyAudio 軟件包。
如果使用的是基于 Debian的Linux(如 Ubuntu ),則可使用 apt 安裝 PyAudio:sudo apt-get install python-pyaudio python3-pyaudio安裝完成后可能仍需要啟用 pip3 install pyaudio ,尤其是在虛擬情況下運(yùn)行。
在安裝完pyaudio的情況下可以通過python實(shí)現(xiàn)語音錄入生成相關(guān)文件。
pocketsphinx的使用注意:
支持文件格式:wav
音頻文件的解碼要求:16KHZ,單聲道
利用python實(shí)現(xiàn)錄音并生成相關(guān)文件程序代碼如下:

from pyaudio import PyAudio, paInt16
import numpy as np
import wave
class recoder:
     NUM_SAMPLES = 2000   
     SAMPLING_RATE = 16000  
     LEVEL = 500     
     COUNT_NUM = 20   
     SAVE_LENGTH = 8     
     Voice_String = []
     def savewav(self,filename):
         wf = wave.open(filename, 'wb')
         wf.setnchannels(1)
         wf.setsampwidth(2)
         wf.setframerate(self.SAMPLING_RATE)
         wf.writeframes(np.array(self.Voice_String).tostring())
         wf.close()
     def recoder(self):
         pa = PyAudio()
         stream = pa.open(format=paInt16, channels=1, rate=self.SAMPLING_RATE, input=True,frames_per_buffer=self.NUM_SAMPLES)
         save_count = 0
         save_buffer = []
         while True:
            string_audio_data = stream.read(self.NUM_SAMPLES)
            audio_data = np.fromstring(string_audio_data, dtype=np.short)
            large_sample_count = np.sum(audio_data > self.LEVEL)
            print(np.max(audio_data))
            if large_sample_count > self.COUNT_NUM:
                save_count = self.SAVE_LENGTH
            else:
                save_count -= 1
            if save_count < 0:
                save_count = 0
            if save_count > 0:
                save_buffer.append(string_audio_data )
            else:
                if len(save_buffer) > 0:
                    self.Voice_String = save_buffer
                    save_buffer = []
                    print("Recode a piece of voice successfully!")
                    return True
		 else:
                    return False
if __name__ == "__main__":
    r = recoder()
    r.recoder()
    r.savewav("test.wav")

注意:在利用python解釋器實(shí)現(xiàn)時一定要注意空格!??!
最后生成的文件就在Python解釋器回話所在目錄下,可以通過play來播放測試一下,如果沒有安裝play可以通過apt命令來安裝。

中文的語音識別

在進(jìn)行完以前的工作以后,我們對語音識別的流程大概有了一定的了解,但是作為一個中國人總得做一個中文的語音識別吧!

我們要在CMU Sphinx語音識別工具包里面下載對應(yīng)的普通話升學(xué)和語言模型。

圖片中標(biāo)記的就是普通話!下載相關(guān)的語音識別工具包。

但是我們要把zh_broadcastnews_64000_utf8.DMP轉(zhuǎn)化成language-model.lm.bin,再解壓zh_broadcastnews_16k_ptm256_8000.tar.bz2得到zh_broadcastnews_ptm256_8000文件夾。
借鑒剛才那位博主的方法,在Ubuntu下找到speech_recognition文件夾??赡軙泻芏嘈』锇檎也坏较嚓P(guān)的文件夾,其實(shí)是在隱藏文件下。大家可以點(diǎn)擊文件夾右上角的三條杠。如下圖所示:

然后給顯示隱藏文件打個勾,如下圖所示:

然后依次按照以下目錄就可以找到啦:

然后把原來的en-US改名成en-US-bak,新建一個文件夾en-US,把解壓出來的zh_broadcastnews_ptm256_8000改成acoustic-model,把chinese.lm.bin改成language-model.lm.bin,把pronounciation-dictionary.dic改后綴成dict,復(fù)制這三個文件到en-US里。同時把原來en-US文件目錄下的LICENSE.txt復(fù)制到現(xiàn)在的文件夾下。
最終該文件夾下有以下文件:

然后我們就可以通過麥克風(fēng)錄入一個語音文件文件(“test.wav”)
在該文件目錄下打開python解釋器輸入以下內(nèi)容:

就看到了輸出內(nèi)容,但是我說的是兩個中國,也測試了一下其他的發(fā)現(xiàn)識別效果很不好?。?!
當(dāng)然有好多同學(xué)可能想要語音包,我就分享給大家啦?。ㄦ溄樱篽ttps://pan.baidu.com/s/13DTDnv_4NYbKXpkXAXODpw
提取碼:zh39)

小范圍中文識別

用官方提供的效果太差,幾乎不能用!那么我看了很多文章以后就想到了一種優(yōu)化方法,但是只適合小范圍的識別!一些命令啥的應(yīng)該沒有問題,但是聊天什么的可能就效果不太好。
找到剛才復(fù)制的4個文件夾,有一個pronounciation-dictionary.dict的文件夾,打開以后是以下內(nèi)容:

感覺這內(nèi)容就是類似于一個字典,很多用詞和平時交流的用詞差距比較大。那么我們改成我們習(xí)慣的用詞就可以啦! 抱著試一試的想法,結(jié)果還真的可以。識別效果真的不錯!
我的做法是:
(1)把圖片中紅色標(biāo)記以上的內(nèi)容繼續(xù)保留,紅色以下的內(nèi)容刪除掉。當(dāng)然處于保險考慮建議大家給該文件備份一下!
(2)給紅色線以下輸入自己想識別的內(nèi)容?。ò凑找?guī)則輸入,不同于拼音?。。。┳罱滦头窝椎那闆r不斷的變好,聽到最多的一句話就是“中國加油”那么今天的內(nèi)容就是將“中國加油”實(shí)現(xiàn)語音轉(zhuǎn)文字!希望能早日開學(xué),哈哈哈哈。

3)輸入以下內(nèi)容:

語音合成

語音合成個人的理解就是文字轉(zhuǎn)語音。不過這句話中可以設(shè)置client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) result = client.synthesis('你好百度', 'zh', 1, { 'vol': 5,'spd': 3,'pit':9,'per': 3})音量、聲調(diào)、速度、男/女/蘿莉/逍遙。大家快去嘗試合成一下吧!最后來欣賞一下語音合成后4種不同風(fēng)格的語音,你更喜歡那一款呢?

以上就是Linux下利用python實(shí)現(xiàn)語音識別詳細(xì)教程的詳細(xì)內(nèi)容,更多關(guān)于Linux利用python實(shí)現(xiàn)語音識別的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • linux 下配置LAMP環(huán)境

    linux 下配置LAMP環(huán)境

    本文給大家介紹的是如何在linux 下配置LAMP環(huán)境,學(xué)習(xí)PHP腳本編程語言之前,必須先搭建并熟悉開發(fā)環(huán)境,開發(fā)環(huán)境有很多種,例如LAMP、WAMP、MAMP等。這里我介紹一下LAMP環(huán)境的搭建,即Linux、Apache、MySQL、PHP環(huán)境。
    2015-03-03
  • ubuntu系統(tǒng)theano和keras的安裝方法

    ubuntu系統(tǒng)theano和keras的安裝方法

    這篇文章主要介紹了ubuntu系統(tǒng)theano和keras的安裝方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • 移植新內(nèi)核到Linux系統(tǒng)上的操作步驟

    移植新內(nèi)核到Linux系統(tǒng)上的操作步驟

    今天小編就為大家分享一篇關(guān)于移植新內(nèi)核到Linux系統(tǒng)上的操作步驟,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Centos7(Firewall)防火墻開啟常見端口命令

    Centos7(Firewall)防火墻開啟常見端口命令

    Centos7默認(rèn)安裝了firewalld,如果沒有安裝的話,則需要YUM命令安裝;firewalld真的用不習(xí)慣,與之前的iptable防火墻區(qū)別太大,但畢竟是未來主流講究慢慢磨合它的設(shè)置規(guī)則,需要的朋友可以參考下
    2018-02-02
  • Redhat 6.5下MySQL5.6集群配置方法完整版

    Redhat 6.5下MySQL5.6集群配置方法完整版

    這篇文章主要介紹了Redhat 6.5下MySQL5.6集群配置方法完整版,需要的朋友可以參考下
    2016-04-04
  • Linux系統(tǒng)下netstat命令詳細(xì)介紹

    Linux系統(tǒng)下netstat命令詳細(xì)介紹

    大家好,本篇文章主要講的是Linux系統(tǒng)下netstat命令詳細(xì)介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • linux zip/unzip命令詳解

    linux zip/unzip命令詳解

    本篇文章主要介紹了linux zip/unzip命令詳解,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • Linux下tcpdump命令解析及使用詳解

    Linux下tcpdump命令解析及使用詳解

    這篇文章主要介紹了Linux下tcpdump命令解析及使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • linux查看用過的命令方法總結(jié)

    linux查看用過的命令方法總結(jié)

    在本篇文章里小編給大家分享了關(guān)于linux怎么查看用過的命令的具體方法和步驟,需要的朋友們參考下。
    2019-06-06
  • Linux 常用的文件基本指令

    Linux 常用的文件基本指令

    這篇文章主要介紹了Linux的常用的文件指令,文章中詳細(xì)列出了常用指令,感興趣的小伙伴可以參考一下
    2023-04-04

最新評論