Perpustakaan untuk melakukan pengenalan suara, dengan dukungan beberapa mesin dan API, online dan offline.
PEMBARUAN 09-02-2022 : Hai semuanya! Proyek ini dimulai sebagai demo teknologi, tetapi saat ini proyek ini membutuhkan lebih banyak waktu daripada yang harus saya lakukan untuk menangani semua PR dan isu. Oleh karena itu, saya ingin mengundang kolaborator secara terbuka - hubungi [email protected] jika Anda tertarik!
Dukungan mesin pengenalan suara/API:
Mulai cepat: pip install SpeechRecognition
. Lihat bagian "Memasang" untuk lebih jelasnya.
Untuk mencobanya dengan cepat, jalankan python -m speech_recognition
setelah menginstal.
Tautan proyek:
Referensi perpustakaan mendokumentasikan setiap objek yang dapat diakses publik di perpustakaan. Dokumen ini juga disertakan dalam reference/library-reference.rst
.
Lihat Catatan tentang penggunaan PocketSphinx untuk informasi tentang menginstal bahasa, mengkompilasi PocketSphinx, dan membuat paket bahasa dari sumber online. Dokumen ini juga disertakan dalam reference/pocketsphinx.rst
.
Anda harus menginstal model Vosk untuk menggunakan Vosk. Berikut adalah model yang tersedia. Anda harus menempatkannya di folder model proyek Anda, seperti "folder-proyek-Anda/model/model-vosk-Anda"
Lihat direktori examples/
di root repositori untuk contoh penggunaan:
recognizer_instance.energy_threshold
untuk detailnya)Pertama, pastikan Anda memiliki semua persyaratan yang tercantum di bagian "Persyaratan".
Cara termudah untuk menginstalnya adalah menggunakan pip install SpeechRecognition
.
Jika tidak, unduh distribusi sumber dari PyPI, dan ekstrak arsipnya.
Di folder tersebut, jalankan python setup.py install
.
Untuk menggunakan semua fungsi perpustakaan, Anda harus memiliki:
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
)Persyaratan berikut bersifat opsional, namun dapat meningkatkan atau memperluas fungsionalitas dalam beberapa situasi:
Bagian berikut membahas rincian setiap persyaratan.
Persyaratan perangkat lunak pertama adalah Python 3.9+. Ini diperlukan untuk menggunakan perpustakaan.
PyAudio diperlukan jika dan hanya jika Anda ingin menggunakan input mikrofon ( Microphone
). PyAudio versi 0.2.11+ diperlukan, karena versi sebelumnya telah mengetahui bug manajemen memori saat merekam dari mikrofon dalam situasi tertentu.
Jika tidak diinstal, semua yang ada di perpustakaan akan tetap berfungsi, kecuali mencoba membuat instance objek Microphone
akan memunculkan AttributeError
.
Petunjuk instalasi di situs web PyAudio cukup bagus - untuk kenyamanan, dirangkum di bawah ini:
pip install SpeechRecognition[audio]
di terminal.sudo apt-get install python-pyaudio python3-pyaudio
di terminal.sudo apt-get install portaudio19-dev python-all-dev python3-all-dev && sudo pip install SpeechRecognition[audio]
(ganti pip
dengan pip3
jika menggunakan Python 3).brew install portaudio
. Kemudian, instal dengan PyAudio menggunakan Pip: pip install SpeechRecognition[audio]
.portaudio19-dev
dan python-all-dev
(atau python3-all-dev
jika menggunakan Python 3) (atau yang setara terdekat) menggunakan manajer paket pilihan Anda, lalu instal dengan PyAudio menggunakan Pip: pip install SpeechRecognition[audio]
(ganti pip
dengan pip3
jika menggunakan Python 3). Paket roda PyAudio untuk versi Python 64-bit umum di Windows dan Linux disertakan untuk kenyamanan, di bawah direktori third-party/
di root repositori. Untuk menginstal, cukup jalankan pip install wheel
diikuti dengan pip install ./third-party/WHEEL_FILENAME
(ganti pip
dengan pip3
jika menggunakan Python 3) di direktori root repositori.
PocketSphinx-Python diperlukan jika dan hanya jika Anda ingin menggunakan pengenal Sphinx ( recognizer_instance.recognize_sphinx
).
Paket roda PocketSphinx-Python untuk 64-bit Python 3.4, dan 3.5 pada Windows disertakan untuk kenyamanan, di bawah direktori third-party/
. Untuk menginstal, cukup jalankan pip install wheel
diikuti dengan pip install ./third-party/WHEEL_FILENAME
(ganti pip
dengan pip3
jika menggunakan Python 3) di folder SpeechRecognition.
Di Linux dan sistem POSIX lainnya (seperti OS X), jalankan pip install SpeechRecognition[pocketsphinx]
. Ikuti instruksi di bawah "Membangun PocketSphinx-Python dari sumber" di Catatan tentang penggunaan PocketSphinx untuk instruksi instalasi.
Perhatikan bahwa versi yang tersedia di sebagian besar repositori paket sudah usang dan tidak akan berfungsi dengan data bahasa yang disertakan. Dianjurkan untuk menggunakan paket roda yang dibundel atau membuat dari sumbernya.
Lihat Catatan tentang penggunaan PocketSphinx untuk informasi tentang menginstal bahasa, mengkompilasi PocketSphinx, dan membuat paket bahasa dari sumber online. Dokumen ini juga disertakan dalam reference/pocketsphinx.rst
.
Vosk API diperlukan jika dan hanya jika Anda ingin menggunakan pengenal Vosk ( recognizer_instance.recognize_vosk
).
Anda dapat menginstalnya dengan python3 -m pip install vosk
.
Anda juga harus menginstal Model Vosk:
Berikut adalah model yang tersedia untuk diunduh. Anda harus menempatkannya di folder model proyek Anda, seperti "folder-proyek-Anda/model/model-vosk-Anda"
Pustaka Google Cloud Speech untuk Python diperlukan jika dan hanya jika Anda ingin menggunakan Google Cloud Speech API ( recognizer_instance.recognize_google_cloud
).
Jika tidak diinstal, semua yang ada di perpustakaan akan tetap berfungsi, kecuali memanggil recognizer_instance.recognize_google_cloud
akan memunculkan RequestError
.
Menurut petunjuk instalasi resmi, cara yang disarankan untuk menginstal ini adalah menggunakan Pip: jalankan pip install google-cloud-speech
(ganti pip
dengan pip3
jika menggunakan Python 3).
Encoder FLAC diperlukan untuk mengkodekan data audio untuk dikirim ke API. Jika menggunakan Windows (x86 atau x86-64), OS X (khusus Intel Mac, OS X 10.6 atau lebih tinggi), atau Linux (x86 atau x86-64), ini sudah dipaketkan dengan perpustakaan ini - Anda tidak perlu menginstal apa pun .
Jika tidak, pastikan Anda memiliki alat baris perintah flac
, yang sering kali tersedia melalui manajer paket sistem. Misalnya, ini biasanya sudo apt-get install flac
pada turunan Debian, atau brew install flac
pada OS X dengan Homebrew.
Bisikan diperlukan jika dan hanya jika Anda ingin menggunakan bisikan ( recognizer_instance.recognize_whisper
).
Anda dapat menginstalnya dengan python3 -m pip install SpeechRecognition[whisper-local]
.
Openai perpustakaan diperlukan jika dan hanya jika Anda ingin menggunakan OpenAI Whisper API ( recognizer_instance.recognize_openai
).
Anda dapat menginstalnya dengan python3 -m pip install SpeechRecognition[openai]
.
Harap setel variabel lingkungan OPENAI_API_KEY
sebelum memanggil recognizer_instance.recognize_openai
.
Pustaka groq diperlukan jika dan hanya jika Anda ingin menggunakan Groq Whisper API ( recognizer_instance.recognize_groq
).
Anda dapat menginstalnya dengan python3 -m pip install SpeechRecognition[groq]
.
Harap setel variabel lingkungan GROQ_API_KEY
sebelum memanggil recognizer_instance.recognize_groq
.
Coba tingkatkan properti recognizer_instance.energy_threshold
. Pada dasarnya ini adalah seberapa sensitif pengenal terhadap kapan pengenalan harus dimulai. Nilai yang lebih tinggi berarti kurang sensitif, yang berguna jika Anda berada di ruangan yang bising.
Nilai ini sepenuhnya bergantung pada mikrofon atau data audio Anda. Tidak ada nilai yang universal, namun nilai yang baik biasanya berkisar antara 50 hingga 4000.
Juga, periksa pengaturan volume mikrofon Anda. Jika terlalu sensitif, mikrofon mungkin menangkap banyak kebisingan sekitar. Jika terlalu tidak sensitif, mikrofon mungkin menolak ucapan hanya sebagai suara bising.
Properti recognizer_instance.energy_threshold
mungkin disetel ke nilai yang terlalu tinggi untuk memulai, dan kemudian disesuaikan lebih rendah secara otomatis dengan penyesuaian ambang batas energi dinamis. Sebelum berada pada tingkat yang baik, ambang energinya sangat tinggi sehingga ucapan hanya dianggap sebagai kebisingan sekitar.
Solusinya adalah dengan menurunkan ambang batas ini, atau hubungi recognizer_instance.adjust_for_ambient_noise
terlebih dahulu, yang akan menetapkan ambang batas ke nilai yang baik secara otomatis.
Coba atur bahasa pengenalan ke bahasa/dialek Anda. Untuk melakukannya, lihat dokumentasi untuk recognizer_instance.recognize_sphinx
, recognizer_instance.recognize_google
, recognizer_instance.recognize_wit
, recognizer_instance.recognize_bing
, recognizer_instance.recognize_api
, recognizer_instance.recognize_houndify
, dan recognizer_instance.recognize_ibm
.
Misalnya, jika bahasa/dialek Anda adalah bahasa Inggris British, lebih baik menggunakan "en-GB"
sebagai bahasanya daripada "en-US"
.
recognizer_instance.listen
; khususnya, saat memanggil Microphone.MicrophoneStream.read
.Hal ini biasanya terjadi ketika Anda menggunakan papan Raspberry Pi, yang tidak memiliki kemampuan input audio sendiri. Hal ini menyebabkan mikrofon default yang digunakan oleh PyAudio diblokir begitu saja saat kami mencoba membacanya. Jika Anda menggunakan Raspberry Pi, Anda memerlukan kartu suara USB (atau mikrofon USB).
Setelah Anda melakukan ini, ubah semua instance Microphone()
menjadi Microphone(device_index=MICROPHONE_INDEX)
, dengan MICROPHONE_INDEX
adalah indeks khusus perangkat keras mikrofon.
Untuk mengetahui berapa nilai MICROPHONE_INDEX
yang seharusnya, jalankan kode berikut:
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 ))
Ini akan mencetak sesuatu seperti berikut:
Mikrofon dengan nama "HDA Intel HDMI: 0 (hw:0,3)" ditemukan untuk `Mikrofon(device_index=0)` Mikrofon dengan nama "HDA Intel HDMI: 1 (hw:0,7)" ditemukan untuk `Mikrofon(device_index=1)` Mikrofon dengan nama "HDA Intel HDMI: 2 (hw:0,8)" ditemukan untuk `Mikrofon(device_index=2)` Mikrofon dengan nama "Bola Salju Biru: Audio USB (hw:1,0)" ditemukan untuk `Mikrofon(device_index=3)` Mikrofon dengan nama "hdmi" ditemukan untuk `Mikrofon(device_index=4)` Mikrofon dengan nama "pulsa" ditemukan untuk `Mikrofon(device_index=5)` Mikrofon dengan nama "default" ditemukan untuk `Mikrofon(device_index=6)`
Sekarang, untuk menggunakan mikrofon Snowball, Anda akan mengubah Microphone()
menjadi Microphone(device_index=3)
.
Microphone()
memberikan kesalahan IOError: No Default Input Device Available
.Seperti yang dinyatakan dalam kesalahan, program tidak mengetahui mikrofon mana yang akan digunakan.
Untuk melanjutkan, gunakan Microphone(device_index=MICROPHONE_INDEX, ...)
alih-alih Microphone(...)
, atau setel mikrofon default di OS Anda. Anda dapat memperoleh kemungkinan nilai MICROPHONE_INDEX
menggunakan kode dalam entri pemecahan masalah tepat di atas entri ini.
Pada PyInstaller versi 3.0, SpeechRecognition sudah didukung secara langsung. Jika Anda mendapatkan masalah aneh saat mengkompilasi program menggunakan PyInstaller, cukup perbarui PyInstaller.
Anda dapat dengan mudah melakukan ini dengan menjalankan pip install --upgrade pyinstaller
.
Kesalahan "bt_audio_service_open" berarti Anda memiliki perangkat audio Bluetooth, tetapi karena perangkat fisik saat ini tidak terhubung, kami tidak dapat menggunakannya - jika Anda tidak menggunakan mikrofon Bluetooth, hal ini dapat diabaikan dengan aman. Jika ya, dan audio tidak berfungsi, periksa kembali untuk memastikan mikrofon Anda benar-benar terhubung. Tampaknya tidak ada cara sederhana untuk menonaktifkan pesan-pesan ini.
Untuk kesalahan dalam bentuk "ALSA lib [...] PCM Tidak Diketahui", lihat jawaban StackOverflow ini. Pada dasarnya, untuk menghilangkan kesalahan dalam bentuk "Kartu PCM.pcm.rear tidak dikenal", cukup beri komentar pcm.rear cards.pcm.rear
di /usr/share/alsa/alsa.conf
, ~/.asoundrc
, dan /etc/asound.conf
.
Untuk "server jack tidak berjalan atau tidak dapat dimulai" atau "sambungkan(2) panggilan ke /dev/shm/jack-1000/default/jack_0 gagal (err=Tidak ada file atau direktori seperti itu)" atau "mencoba menyambung ke server gagal", ini disebabkan oleh ALSA yang mencoba menyambung ke JACK, dan dapat diabaikan dengan aman. Saya tidak mengetahui adanya cara sederhana untuk mematikan pesan-pesan tersebut saat ini, selain sepenuhnya menonaktifkan pencetakan saat memulai mikrofon.
ChildProcessError
yang mengatakan bahwa ia tidak dapat menemukan konverter sistem FLAC, meskipun sudah diinstal.Menginstal FLAC untuk OS X langsung dari kode sumber tidak akan berfungsi, karena tidak menambahkan file executable ke jalur pencarian dengan benar.
Menginstal FLAC menggunakan Homebrew memastikan jalur pencarian diperbarui dengan benar. Pertama, pastikan Anda memiliki Homebrew, lalu jalankan brew install flac
untuk menginstal file yang diperlukan.
Untuk meretas perpustakaan ini, pertama-tama pastikan Anda memiliki semua persyaratan yang tercantum di bagian "Persyaratan".
speech_recognition/__init__.py
.examples/
, dan skrip demo ada di speech_recognition/__main__.py
.speech_recognition/
.reference/
direktori.third-party/
. Untuk menginstal/menginstal ulang perpustakaan secara lokal, jalankan python -m pip install -e .[dev]
di direktori root proyek.
Sebelum rilis, nomor versinya adalah README.rst
dan speech_recognition/__init__.py
. Tag versi kemudian dibuat menggunakan git config gpg.program gpg2 && git config user.signingkey DB45F6C431DE7C2DCD99FF7904882258A4063489 && git tag -s VERSION_GOES_HERE -m "Version VERSION_GOES_HERE"
.
Rilis dilakukan dengan menjalankan make-release.sh VERSION_GOES_HERE
untuk membuat paket sumber Python, menandatanganinya, dan mengunggahnya ke PyPI.
Untuk menjalankan semua tes:
python -m unittest discover --verbose
Untuk menjalankan analisis statis:
python -m flake8 --ignore=E501,E701,W503 speech_recognition tests examples setup.py
Untuk memastikan RST terbentuk dengan baik:
python -m rstcheck README.rst reference/ * .rst
Pengujian juga dilakukan secara otomatis oleh GitHub Actions, pada setiap dorongan.
Eksekusi flac-win32
yang disertakan adalah biner resmi FLAC 1.3.2 32-bit Windows.
Executable flac-linux-x86
dan flac-linux-x86_64
yang disertakan dibuat dari kode sumber FLAC 1.3.2 dengan Manylinux untuk memastikan bahwa itu kompatibel dengan berbagai macam distribusi.
Eksekusi FLAC yang dibuat harus dapat direproduksi sedikit demi sedikit. Untuk membangunnya kembali, jalankan perintah berikut di dalam direktori proyek pada sistem mirip 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/
Eksekusi flac-mac
yang disertakan diekstraksi dari xACT 2.39, yang merupakan frontend untuk FLAC 1.3.2 yang dengan mudah menyertakan biner untuk semua encodernya. Secara khusus, ini adalah salinan xACT 2.39/xACT.app/Contents/Resources/flac
di xACT2.39.zip
.
Uberi <[email protected]> (Anthony Zhang) bobsayshilol arvindch <[email protected]> (Arvind Chembarpu) kevinismith <[email protected]> (Kevin Smith) haas85 DelightRun <[email protected]> maverickagm kamushadenes <[email protected]> (Kamus Hadenes) sbraden <[email protected]> (Sarah Braden) tb0hdan (Bohdan Turkynewych) Thynix <[email protected]> (Steve Dougherty) sayang <[email protected]> (Broderick Carlin)
Silakan laporkan bug dan saran di pelacak masalah!
Cara mengutip perpustakaan ini (gaya APA):
Zhang, A. (2017). Pengenalan Ucapan (Versi 3.11) [Perangkat Lunak]. Tersedia dari https://github.com/Uberi/speech_recognition#readme.
Cara mengutip perpustakaan ini (gaya Chicago):
Zhang, Anthony. 2017. Pengenalan Ucapan (versi 3.11).
Periksa juga API Python Baidu Yuyin, yang didasarkan pada versi lama proyek ini, dan menambahkan dukungan untuk Baidu Yuyin. Perhatikan bahwa Baidu Yuyin hanya tersedia di Tiongkok.
Hak Cipta 2014-2017 Anthony Zhang (Uberi). Kode sumber untuk perpustakaan ini tersedia online di GitHub.
SpeechRecognition tersedia di bawah lisensi 3-klausul BSD. Lihat LICENSE.txt
di direktori akar proyek untuk informasi lebih lanjut.
Demi kenyamanan, semua distribusi resmi SpeechRecognition sudah menyertakan salinan pemberitahuan hak cipta dan lisensi yang diperlukan. Dalam proyek Anda, Anda cukup mengatakan bahwa informasi lisensi untuk SpeechRecognition dapat ditemukan dalam README SpeechRecognition, dan pastikan SpeechRecognition terlihat oleh pengguna jika mereka ingin melihatnya .
SpeechRecognition mendistribusikan kode sumber, binari, dan file bahasa dari CMU Sphinx. File-file ini berlisensi BSD dan dapat didistribusikan ulang selama pemberitahuan hak cipta dipertahankan dengan benar. Lihat speech_recognition/pocketsphinx-data/*/LICENSE*.txt
dan third-party/LICENSE-Sphinx.txt
untuk detail lisensi masing-masing bagian.
SpeechRecognition mendistribusikan kode sumber dan biner dari PyAudio. File-file ini berlisensi MIT dan dapat didistribusikan ulang selama pemberitahuan hak cipta dipertahankan dengan benar. Lihat third-party/LICENSE-PyAudio.txt
untuk detail lisensi.
SpeechRecognition mendistribusikan binari dari FLAC - speech_recognition/flac-win32.exe
, speech_recognition/flac-linux-x86
, dan speech_recognition/flac-mac
. File-file ini berlisensi GPLv2 dan dapat didistribusikan ulang, selama persyaratan GPL dipenuhi. Biner FLAC adalah kumpulan program terpisah, jadi pembatasan GPL ini tidak berlaku untuk perpustakaan atau program Anda yang menggunakan perpustakaan, hanya untuk FLAC itu sendiri. Lihat LICENSE-FLAC.txt
untuk rincian lisensi.