Speech Recognition

      在〈Speech Recognition〉中尚無留言

語音辨識 (Automatic Speech Recognition, ASR) 可以將麥克風或語音檔 (.wav) 輸出成文字。在 python 中常用的套件為 SpeechRecognition。

套件安裝

請先在 Pycharm Terminal 中安裝 SpeechRecognition 套件

pip install SpeechRecognition

然後準備一個 “.wav” 檔置於專案下,再輸入如下代碼即可執行。代碼中的 test.wav 請由本站下載

import speech_recognition
r=speech_recognition.Recognizer()
with speech_recognition.AudioFile("./test.wav") as source:
audio=r.record(source)
txt=r.recognize_google(audio, language="zh-tw")
print(txt)

結果:
不小心買的太多了入境時恐怕要補稅如果買高單價的精品包手錶一現行的規定入境每人消免稅額新臺幣

Speeh_recognition 可以連接到不少的 api,但大部份的 api  都需要 key。而 r.recognize_google 為 Google 所提供的 api,不需要 key,不過好像有時間長度的限制。

使用麥克風

若要使用麥克風說話再進行輸出,需先安裝如下套件

#Windows
pip install pyaudio
#Linux
sudo apt-get install python3-pyaudio

speech_recognition.Microphone.list_microphone_names() 可以列出所有的麥克風裝置,然後再使用 speech_recognition.Microphone(device_index=x) 開啟 mic

import speech_recognition
print(speech_recognition.Microphone.list_microphone_names())
mic=speech_recognition.Microphone(device_index=1)

結果 : 
['Microsoft Sound Mapper - Input', 'Microphone (C922 Pro Stream Web', ......]

在 with mic as source 區塊中,使用 r.listen(source) 取得聲音,最後再辨識 audio。如果周圍聲音吵雜的話,還可以在 r.listne() 之前設定 ambient_noise 進行降噪功能。

with mic as source:
    r.adjust_for_ambient_noise(source)
    audio = r.listen(source)
txt=r.recognize_google(audio,language="zh-tw")

辨識的完整代碼如下

import speech_recognition
print(speech_recognition.Microphone.list_microphone_names())
mic=speech_recognition.Microphone(device_index=1)
r=speech_recognition.Recognizer()
while True:
    print("請開始說話...", end="")
    with mic as source:
        r.adjust_for_ambient_noise(source)#降噪
        audio = r.listen(source)
    try:
        txt=r.recognize_google(audio,language="zh-tw")
        print()
        print(f"辨識結果 : {txt}")
        if txt == "離開":break
    except:
        print("\r", end="")
結果:
['Microsoft Sound Mapper - Input', 'Microphone (C922 Pro Stream Web', 'Microsoft Sound Mapper - Output', '喇叭 (Realtek USB Audio)', ....]
請開始說話...
辨識結果 : 今天天氣很好
請開始說話...
辨識結果 : I am a good boy

如果不想寫上面的代碼,亦可在 Terminal 執行如下指令

python -m speech_recognition

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *