說說python自帶的speech和speech_recognition的使用以及效果


人工智能這么火爆的時代,近來正好有時間就想研究以下智能語音這塊的內容,雖然感覺自帶的模塊應該識別不太准確,不然就不會有百度的padder,google的tensorflow等框架,但是路要一步步走,飯也要一步步吃,初學的時候總要各種嘗試一下。以下內容是我最近兩天的嘗試結果。

 環境win10,python3.7

先說說speech,這個賊簡單 

 

pip install speech
  • recognize_bing(): Microsoft Bing Speech

  • recognize_google(): Google Web Speech API

  • recognize_google_cloud(): Google Cloud Speech - requires installation of the google-cloud-speech package

  • recognize_houndify(): Houndify by SoundHound

  • recognize_ibm(): IBM Speech to Text

  • recognize_sphinx(): CMU Sphinx - requires installing PocketSphinx

  • recognize_wit(): Wit.ai

目前我使用的是這個:recognize_sphinx,因為

以上七個中只有 recognition_sphinx()可與CMU Sphinx 引擎脫機工作, 其他六個都需要連接互聯網。

SpeechRecognition 附帶 Google Web Speech API 的默認 API 密鑰,可直接使用它。其他六個 API 都需要使用 API 密鑰或用戶名/密碼組合進行身份驗證,因此本文使用了 Web Speech API。

 

安裝之后就可以讓他說話了,在import speech的時候,會出現一些環境的配置,我這邊是win10的系統,就會出現語音識別的相關設置,按照提示操作即可。

import speech

#這邊三行是自己會說話
speech.say("小王王 你好呀")
speech.say("hello world")
speech.say("要開始啦")

#這邊是進行對話
while True:
    print(u"開始說話")
    say = speech.input()  # 接收語音
    speech.say("you said:" + say)  # 說話
    print(u"說話結束")
    if say == "你好":
        speech.say("How are you?")
    elif say == "天氣":
        speech.say("今天天氣棒棒棒!")
    elif say == "小王王":
        speech.say("小王王 棒棒棒")
    elif say == "小麗平":
        speech.say("小麗平 六六六")
    else:
        speech.say("對不起 我不知道你說什么")

 

運行完,以上程序,我發現它總是不知道我在說啥,於是回復我-->對不起 我不知道你說什么,就一個你好回答對了,不過還是要嘗試一下。

 

 

然后我就想說可不可以自己錄一個音頻,實現識別的效果,於是發現speech_recognition這個庫,也是很簡單直接安裝一下,但是需要安裝別的包。

pip install speech_recognition -i https://mirror.baidu.com/pypi/simple

然后這個還需要pocketsphinx這個庫,於是win10安裝一直報錯,我就干脆直接下載wheel的輪子,去這個網站https://www.lfd.uci.edu/~gohlke/pythonlibs/#pocketsphinx,搜索pocketsphinx,下載對應的版本到本地即可,然后直接pip install 你下載的.wheel就可以啦

 

 

 

相關錄音代碼識別

# -*- coding: utf-8 -*-
import speech_recognition as sr
AUDIO_FILE = "11.wav"
r = sr.Recognizer()
with sr.AudioFile(AUDIO_FILE) as source:
    audio = r.record(source)  # read the entire audio file

res = r.recognize_sphinx(audio)
res1 = res.split(" ")
# for each in res1:
print(" ".join(res1))

運行結果:(其實我說的是你好你好 運動 生活)

 

 

 

說道這里,大家可能會遇到一些問題,比如碰到這個錯誤

第一種錯誤:

Audio file could not be read as PCM WAV, AIFF/AIFF-C, or Native FLAC; check if file is corrupted or in another format

 

這個是啥意思呢,就是你的音頻文件必須是wav的格式,而不是你錄音之后就直接修改后綴名就可以的,我的是華為手機,錄制的音頻是ma4,

首先我要轉換為wav,我們可以去這個網上在線轉換后下載https://www.aconvert.com/cn/audio/m4a-to-mp3/

如果是mp4的,這個地址轉換wav格式,https://www.aconvert.com/cn/audio/mp4-to-mp3/

 

明明你這玩意是中文的被翻譯成英文的,因為這個庫的安裝路勁下面只有en-US,當然只能翻譯成英文的啦

 

 

於是我們需要添加一個zh-CN的文件夾,下載對應的中文就可以啦

(1)到對應的python庫安裝路徑下新建zh-CN

(2)https://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/下載對應的中文庫,下載對應的壓縮包后解壓

 

 (3)復制以下內容並修改命名

 

最后發現為啥還是不行,因為代碼初始化的時候默認是英文 en-US,所以這邊代碼修改一下,即可

 

 或者修改前面的傳參:

 

 

 

 

 然后在執行以下你的代碼就可以翻譯成中文了,感覺python自帶的庫,最后的結果貌似不太理解,只好在研究研究啦,加油!我感覺可能配置上訓練或者學習,可能可以實現比較好的效果,繼續研究,有時間的話再分享。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM