用於執行語音識別的庫,支援多個引擎和 API,線上和離線。
2022-02-09 更新:大家好!這個專案最初是一個技術演示,但現在它需要更多的時間來跟上所有的 PR 和問題。因此,我想向合作者發出公開邀請- 如果您有興趣,請聯繫 [email protected]!
語音辨識引擎/API 支援:
快速入門: pip install SpeechRecognition
。有關更多詳細信息,請參閱“安裝”部分。
若要快速嘗試,請在安裝後執行python -m speech_recognition
。
項目連結:
圖書館參考記錄了圖書館中每個可公開存取的對象。該文件也包含在reference/library-reference.rst
下。
有關安裝語言、編譯 PocketSphinx 以及從線上資源建立語言包的信息,請參閱使用 PocketSphinx 的注意事項。該文件也包含在reference/pocketsphinx.rst
下。
您必須安裝 Vosk 模型才能使用 Vosk。這裡有可用的模型。您必須將它們放在專案的模型資料夾中,例如“your-project-folder/models/your-vosk-model”
請參閱儲存庫根目錄中的examples/
目錄以取得使用範例:
recognizer_instance.energy_threshold
)首先,確保您符合「要求」部分中列出的所有要求。
安裝它最簡單的方法是使用pip install SpeechRecognition
。
否則,從 PyPI 下載原始碼發行版,並解壓縮存檔。
在該資料夾中,執行python setup.py install
。
要使用該庫的所有功能,您應該:
Microphone
時才需要)recognizer_instance.recognize_sphinx
時才需要)recognizer_instance.recognize_google_cloud
)recognizer_instance.recognize_vosk
時才需要)recognizer_instance.recognize_whisper
時才需要)recognizer_instance.recognize_openai
時才需要)recognizer_instance.recognize_groq
時才需要)以下要求是可選的,但在某些情況下可以改進或擴展功能:
以下部分將詳細介紹每項要求。
第一個軟體要求是 Python 3.9+。這是使用該庫所必需的。
當且僅當您想使用麥克風輸入( Microphone
)時才需要 PyAudio。需要 PyAudio 版本 0.2.11+,因為早期版本在某些情況下從麥克風錄製時存在已知的記憶體管理錯誤。
如果未安裝,庫中的所有內容仍然可以工作,除了嘗試實例化Microphone
物件會引發AttributeError
。
PyAudio網站上的安裝說明相當不錯——為了方便起見,總結如下:
pip install SpeechRecognition[audio]
。sudo apt-get install python-pyaudio python3-pyaudio
。sudo apt-get install portaudio19-dev python-all-dev python3-all-dev && sudo pip install SpeechRecognition[audio]
(如果有,請將pip
替換為pip3
使用Python 3)。brew install portaudio
。然後,使用 Pip 安裝 PyAudio: pip install SpeechRecognition[audio]
。portaudio19-dev
和python-all-dev
(如果使用 Python 3,則安裝python3-all-dev
)套件(或其最接近的等效項) ,然後使用PyAudio 進行安裝使用 Pip: pip install SpeechRecognition[audio]
(如果使用 Python 3,請將pip
替換為pip3
)。為方便起見,在儲存庫根目錄的third-party/
目錄下包含了 Windows 和 Linux 上常見 64 位元 Python 版本的 PyAudio 輪包。要安裝,只需在儲存庫根目錄中執行pip install wheel
,然後執行pip install ./third-party/WHEEL_FILENAME
(如果使用 Python 3,請將pip
替換為pip3
)。
當且僅當您想要使用 Sphinx 辨識器( recognizer_instance.recognize_sphinx
) 時,才需要 PocketSphinx-Python。
為了方便起見,在third-party/
目錄下包含了適用於 Windows 上的 64 位元 Python 3.4 和 3.5 的 PocketSphinx-Python 輪包。要安裝,只需在 SpeechRecognition 資料夾中執行pip install wheel
,然後執行pip install ./third-party/WHEEL_FILENAME
(如果使用 Python 3,請將pip
替換為pip3
)。
在 Linux 和其他 POSIX 系統(例如 OS X)上,執行pip install SpeechRecognition[pocketsphinx]
。請依照使用 PocketSphinx 的注意事項中的「從原始碼建立 PocketSphinx-Python」下的說明進行安裝說明。
請注意,大多數軟體包儲存庫中提供的版本都已過時,並且無法與捆綁的語言資料一起使用。建議使用捆綁的輪子包或從原始碼建置。
有關安裝語言、編譯 PocketSphinx 以及從線上資源建立語言包的信息,請參閱使用 PocketSphinx 的注意事項。該文件也包含在reference/pocketsphinx.rst
下。
當且僅當您想要使用 Vosk 辨識器( recognizer_instance.recognize_vosk
) 時,才需要 Vosk API。
您可以使用python3 -m pip install vosk
安裝它。
您還必須安裝 Vosk 模型:
這裡有可供下載的模型。您必須將它們放在專案的模型資料夾中,例如“your-project-folder/models/your-vosk-model”
當且僅當您想要使用 Google Cloud Speech API ( recognizer_instance.recognize_google_cloud
) 時,才需要適用於 Python 的 Google Cloud Speech 函式庫。
如果未安裝,庫中的所有內容仍然可以運作,除了呼叫recognizer_instance.recognize_google_cloud
會引發RequestError
。
根據官方安裝說明,建議使用 Pip 安裝:執行pip install google-cloud-speech
(如果使用 Python 3,請將pip
替換為pip3
)。
需要使用 FLAC 編碼器對音訊資料進行編碼才能傳送到 API。如果使用 Windows(x86 或 x86-64)、OS X(僅限 Intel Mac、OS X 10.6 或更高版本)或 Linux(x86 或 x86-64),則它已與此庫捆綁在一起- 您無需安裝任何內容。
否則,請確保您擁有flac
命令列工具,該工具通常可以透過系統套件管理器取得。例如,在 Debian 衍生品上通常是sudo apt-get install flac
,或在帶有 Homebrew 的 OS X 上是brew install flac
。
當且僅當您想使用耳語( recognizer_instance.recognize_whisper
)時才需要耳語。
您可以使用python3 -m pip install SpeechRecognition[whisper-local]
安裝它。
當且僅當您想要使用 OpenAI Whisper API ( recognizer_instance.recognize_openai
) 時,才需要 openai 函式庫。
您可以使用python3 -m pip install SpeechRecognition[openai]
安裝它。
請在呼叫recognizer_instance.recognize_openai
之前設定環境變數OPENAI_API_KEY
。
當且僅當您想要使用 Groq Whisper API ( recognizer_instance.recognize_groq
) 時,才需要 groq 函式庫。
您可以使用python3 -m pip install SpeechRecognition[groq]
安裝它。
請在呼叫recognizer_instance.recognize_groq
之前設定環境變數GROQ_API_KEY
。
嘗試增加recognizer_instance.energy_threshold
屬性。這基本上就是識別器對識別何時開始的敏感度。數值越高意味著靈敏度越低,如果您在吵鬧的房間裡,這會很有用。
該值完全取決於您的麥克風或音訊資料。沒有一刀切的值,但好的值通常在 50 到 4000 之間。
另外,請檢查您的麥克風音量設定。如果太敏感,麥克風可能會拾取大量環境噪音。如果太不靈敏,麥克風可能會將語音視為噪音而拒絕。
recognizer_instance.energy_threshold
屬性可能設定為一開始就太高的值,然後透過動態能量閾值調整自動調低。在達到良好水平之前,能量閾值非常高,以至於語音僅被視為環境噪音。
解決方案是降低這個閾值,或預先呼叫recognizer_instance.adjust_for_ambient_noise
,這會自動將閾值設為一個好的值。
嘗試將識別語言設定為您的語言/方言。為此,請參閱recognizer_instance.recognize_sphinx
、 recognizer_instance.recognize_google
、 recognizer_instance.recognize_wit
recognizer_instance.recognize_ibm
recognizer_instance.recognize_bing
recognizer_instance.recognize_api
recognizer_instance.recognize_houndify
例如,如果您的語言/方言是英式英語,則最好使用"en-GB"
作為語言,而不是"en-US"
。
recognizer_instance.listen
上;具體來說,當它呼叫Microphone.MicrophoneStream.read
時。當您使用 Raspberry Pi 板時,通常會發生這種情況,該板本身不具有音訊輸入功能。這會導致 PyAudio 使用的預設麥克風在我們嘗試讀取它時簡單地阻塞。如果您碰巧使用的是 Raspberry Pi,則需要 USB 音效卡(或 USB 麥克風)。
執行此操作後,將Microphone()
的所有實例變更為Microphone(device_index=MICROPHONE_INDEX)
,其中MICROPHONE_INDEX
是麥克風的硬體特定索引。
若要確定MICROPHONE_INDEX
的值應該是什麼,請執行下列程式碼:
import speech_recognition as sr
for index , name in enumerate ( sr . Microphone . list_microphone_names ()):
print ( "Microphone with name " {1} " found for `Microphone(device_index={0})`" . format ( index , name ))
這將列印出如下內容:
為「麥克風(device_index=0)」找到名稱為「HDA Intel HDMI: 0 (hw:0,3)」的麥克風 為「麥克風(device_index=1)」找到名稱為「HDA Intel HDMI: 1 (hw:0,7)」的麥克風 為「麥克風(device_index=2)」找到名稱為「HDA Intel HDMI: 2 (hw:0,8)」的麥克風 為「麥克風(device_index=3)」找到了名為「Blue Snowball: USB Audio (hw:1,0)」的麥克風 找到「麥克風(device_index=4)」的名稱為「hdmi」的麥克風 找到「麥克風(device_index=5)」的名稱為「pulse」的麥克風 為「麥克風(device_index=6)」找到了名稱為「default」的麥克風
現在,要使用 Snowball 麥克風,您需要將Microphone()
更改為Microphone(device_index=3)
。
Microphone()
會出現錯誤IOError: No Default Input Device Available
。如錯誤所示,程式不知道要使用哪個麥克風。
若要繼續,請使用Microphone(device_index=MICROPHONE_INDEX, ...)
而不是Microphone(...)
,或在作業系統中設定預設麥克風。您可以使用上面的故障排除條目中的程式碼來取得MICROPHONE_INDEX
的可能值。
從 PyInstaller 版本 3.0 開始,開箱即用地支援 SpeechRecognition。如果您在使用 PyInstaller 編譯程式時遇到奇怪的問題,只需更新 PyInstaller 即可。
您可以透過執行pip install --upgrade pyinstaller
輕鬆完成此操作。
「bt_audio_service_open」錯誤意味著您有一個藍牙音訊設備,但由於目前未連接實體設備,我們實際上無法使用它 - 如果您沒有使用藍牙麥克風,那麼可以安全地忽略它。如果是,且音訊無法正常工作,請仔細檢查以確保您的麥克風確實已連接。似乎沒有一種簡單的方法可以禁用這些訊息。
關於「ALSA lib [...] Unknown PCM」形式的錯誤,請參閱此 StackOverflow 答案。基本上,要消除「Unknown PCM cards.pcm.rear」形式的錯誤,只需在/usr/share/alsa/alsa.conf
、 ~/.asoundrc
和 中註解掉pcm.rear cards.pcm.rear
即可/etc/asound.conf
。
對於“jack 伺服器未運行或無法啟動”或“connect(2) 呼叫 /dev/shm/jack-1000/default/jack_0 失敗(err=沒有此類檔案或目錄)”或“嘗試連接到伺服器失敗”,這些是由ALSA 嘗試連接到JACK 引起的,可以安全地忽略。除了在啟動麥克風時完全停用列印之外,我目前不知道有任何簡單的方法可以關閉這些訊息。
ChildProcessError
訊息,指出它無法找到系統 FLAC 轉換器,即使它已安裝。直接從原始程式碼安裝適用於 OS X 的 FLAC 將無法運作,因為它無法將執行檔正確新增至搜尋路徑。
使用 Homebrew 安裝 FLAC 可確保搜尋路徑正確更新。首先,請確保您有 Homebrew,然後執行brew install flac
來安裝必要的檔案。
要破解此庫,首先請確保您符合「要求」部分中列出的所有要求。
speech_recognition/__init__.py
中。examples/
目錄下,演示腳本位於speech_recognition/__main__.py
中。speech_recognition/
目錄中。reference/
目錄中找到。third-party/
目錄中。若要在本機安裝/重新安裝庫,請在專案根目錄中執行python -m pip install -e .[dev]
。
在發布之前,版本號碼會在README.rst
和speech_recognition/__init__.py
中發生變化。然後使用git config gpg.program gpg2 && git config user.signingkey DB45F6C431DE7C2DCD99FF7904882258A4063489 && git tag -s VERSION_GOES_HERE -m "Version VERSION_GOES_HERE"
發布是透過運行make-release.sh VERSION_GOES_HERE
來建立 Python 來源套件、對其進行簽名並將其上傳到 PyPI 來完成的。
運行所有測試:
python -m unittest discover --verbose
要運行靜態分析:
python -m flake8 --ignore=E501,E701,W503 speech_recognition tests examples setup.py
為了確保 RST 格式良好:
python -m rstcheck README.rst reference/ * .rst
每次推送時,測試也會由 GitHub Actions 自動完成。
包含的flac-win32
可執行檔是官方 FLAC 1.3.2 32 位元 Windows 二進位檔案。
隨附的flac-linux-x86
和flac-linux-x86_64
可執行檔是根據 FLAC 1.3.2 原始碼與 Manylinux 建構的,以確保它與各種發行版相容。
建置的 FLAC 可執行檔應該是可逐位重現的。若要重建它們,請在類似 Debian 的系統上的專案目錄中執行以下命令:
# download and extract the FLAC source code
cd third-party
sudo apt-get install --yes docker.io
# build FLAC inside the Manylinux i686 Docker image
tar xf flac-1.3.2.tar.xz
sudo docker run --tty --interactive --rm --volume " $( pwd ) :/root " quay.io/pypa/manylinux1_i686:latest bash
cd /root/flac-1.3.2
./configure LDFLAGS=-static # compiler flags to make a static build
make
exit
cp flac-1.3.2/src/flac/flac ../speech_recognition/flac-linux-x86 && sudo rm -rf flac-1.3.2/
# build FLAC inside the Manylinux x86_64 Docker image
tar xf flac-1.3.2.tar.xz
sudo docker run --tty --interactive --rm --volume " $( pwd ) :/root " quay.io/pypa/manylinux1_x86_64:latest bash
cd /root/flac-1.3.2
./configure LDFLAGS=-static # compiler flags to make a static build
make
exit
cp flac-1.3.2/src/flac/flac ../speech_recognition/flac-linux-x86_64 && sudo rm -r flac-1.3.2/
包含的flac-mac
可執行檔是從 xACT 2.39 中提取的,xACT 2.39 是 FLAC 1.3.2 的前端,可以方便地包含所有編碼器的二進位檔案。具體來說,它是xACT2.39.zip
中xACT 2.39/xACT.app/Contents/Resources/flac
的副本。
Uberi <[email protected]>(張安東尼) 博賽希洛爾 arvindch <[email protected]> (Arvind Chembarpu) kevinismith <[email protected]>(凱文史密斯) 哈斯85 DelightRun <[email protected]> 特立獨行者 kamushadenes <[email protected]> (Kamus Hadenes) sbraden <[email protected]>(莎拉·布雷登) tb0hdan(Bohdan Turkynewych) Thynix <[email protected]>(史蒂夫多爾蒂) beeedy <[email protected]>(布羅德里克·卡林)
請在問題追蹤器中報告錯誤和建議!
如何引用這個庫(APA風格):
張,A.(2017)。語音辨識(版本 3.11)[軟體]。可從 https://github.com/Uberi/speech_recognition#readme 取得。
如何引用這個庫(芝加哥風格):
張,安東尼. 2017 。
也請查看 Python 百度語音 API,它基於該專案的舊版本,並添加了對百度語音的支援。請注意,百度語音僅在中國境內可用。
版權所有 2014-2017 安東尼張 (Uberi)。該庫的源代碼可在 GitHub 上線上取得。
SpeechRecognition 在 3 條款 BSD 授權下可用。有關詳細信息,請參閱項目根目錄中的LICENSE.txt
。
為方便起見,SpeechRecognition 的所有官方發行版均已包含必要的版權聲明和許可證的副本。在您的專案中,您可以簡單地說 SpeechRecognition 的許可資訊可以在 SpeechRecognition README 中找到,並確保 SpeechRecognition 對用戶可見(如果用戶希望查看它) 。
SpeechRecognition 分發來自 CMU Sphinx 的原始程式碼、二進位檔案和語言檔案。這些文件是 BSD 許可的,只要正確保留版權聲明,就可以重新分發。有關各個部分的許可證詳細信息,請參閱speech_recognition/pocketsphinx-data/*/LICENSE*.txt
和third-party/LICENSE-Sphinx.txt
。
SpeechRecognition 從 PyAudio 分發原始碼和二進位。這些文件是 MIT 許可的,只要正確保留版權聲明,就可以重新分發。有關許可證詳細信息,請參閱third-party/LICENSE-PyAudio.txt
。
SpeechRecognition 從 FLAC 分發二進位檔案speech_recognition/flac-win32.exe
、 speech_recognition/flac-linux-x86
和speech_recognition/flac-mac
。這些文件是 GPLv2 授權的並且是可再分發的,只要滿足 GPL 的條款即可。 FLAC 二進位檔案是單獨程序的集合,因此這些 GPL 限制不適用於庫或使用該程式庫的程序,僅適用於 FLAC 本身。有關許可證詳細信息,請參閱LICENSE-FLAC.txt
。