語音辨識 (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