온라인 및 오프라인에서 여러 엔진과 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+입니다. 도서관 이용을 위해 꼭 필요합니다.
PyAudio는 마이크 입력( Microphone
)을 사용하려는 경우에만 필요합니다. 이전 버전에는 특정 상황에서 마이크를 통해 녹음할 때 알려진 메모리 관리 버그가 있으므로 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
사용하여 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
으로 교체). Windows 및 Linux의 일반적인 64비트 Python 버전용 PyAudio 휠 패키지는 편의를 위해 저장소 루트의 third-party/
디렉터리에 포함되어 있습니다. 설치하려면 저장소 루트 디렉터리에서 pip install ./third-party/WHEEL_FILENAME
3을 사용하는 경우 pip
pip3
으로 교체)을 실행한 후 pip install wheel
실행하면 됩니다.
PocketSphinx-Python은 Sphinx 인식기( recognizer_instance.recognize_sphinx
) 를 사용하려는 경우에만 필요합니다 .
Windows의 64비트 Python 3.4 및 3.5용 PocketSphinx-Python 휠 패키지는 편의를 위해 third-party/
디렉터리에 포함되어 있습니다. 설치하려면 SpeechRecognition 폴더에서 pip install wheel
실행한 다음 pip install ./third-party/WHEEL_FILENAME
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"과 같은 프로젝트의 모델 폴더에 배치해야 합니다.
Python용 Google Cloud Speech 라이브러리는 Google Cloud Speech API( recognizer_instance.recognize_google_cloud
)를 사용하려는 경우에만 필요합니다.
설치되지 않은 경우에는 recognizer_instance.recognize_google_cloud
호출하면 RequestError
발생한다는 점을 제외하고 라이브러리의 모든 항목이 계속 작동합니다.
공식 설치 지침에 따르면 권장되는 설치 방법은 Pip을 사용하는 것입니다. pip install google-cloud-speech
실행합니다(Python 3을 사용하는 경우 pip
pip3
으로 교체).
API로 보낼 오디오 데이터를 인코딩하려면 FLAC 인코더가 필요합니다. 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_bing
, recognizer_instance.recognize_api
, recognizer_instance.recognize_houndify
및 recognizer_instance.recognize_ibm
문서를 참조하세요.
예를 들어, 언어/방언이 영국 영어인 경우 " "en-US"
보다는 " "en-GB"
언어로 사용하는 것이 더 좋습니다.
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 ))
그러면 다음과 같은 내용이 인쇄됩니다.
`Microphone(device_index=0)`에 대해 이름이 "HDA Intel HDMI: 0 (hw:0,3)"인 마이크를 찾았습니다. `Microphone(device_index=1)`에 대해 이름이 "HDA Intel HDMI: 1 (hw:0,7)"인 마이크를 찾았습니다. `Microphone(device_index=2)`에 대해 이름이 "HDA Intel HDMI: 2 (hw:0,8)"인 마이크를 찾았습니다. `Microphone(device_index=3)`에서 "Blue Snowball: USB Audio (hw:1,0)"라는 이름의 마이크가 발견되었습니다. `Microphone(device_index=4)`에 대해 이름이 "hdmi"인 마이크가 발견되었습니다. `Microphone(device_index=5)`에 대해 "pulse"라는 이름의 마이크가 발견되었습니다. `Microphone(device_index=6)`에 대해 "default"라는 이름의 마이크가 발견되었습니다.
이제 Snowball 마이크를 사용하려면 Microphone()
Microphone(device_index=3)
으로 변경합니다.
Microphone()
호출하면 IOError: No Default Input Device Available
오류가 발생합니다.오류에서 알 수 있듯이 프로그램은 어떤 마이크를 사용해야 할지 모릅니다.
계속하려면 Microphone(device_index=MICROPHONE_INDEX, ...)
Microphone(...)
(device_index=MICROPHONE_INDEX, ...)을 사용하거나 OS에서 기본 마이크를 설정하세요. 이 항목 바로 위의 문제 해결 항목에 있는 코드를 사용하여 MICROPHONE_INDEX
의 가능한 값을 얻을 수 있습니다.
PyInstaller 버전 3.0부터 SpeechRecognition이 기본적으로 지원됩니다. PyInstaller를 사용하여 프로그램을 컴파일할 때 이상한 문제가 발생하는 경우 간단히 PyInstaller를 업데이트하세요.
pip install --upgrade pyinstaller
실행하면 쉽게 이 작업을 수행할 수 있습니다.
"bt_audio_service_open" 오류는 Bluetooth 오디오 장치가 있지만 실제 장치가 현재 연결되어 있지 않아 실제로 사용할 수 없음을 의미합니다. Bluetooth 마이크를 사용하지 않는 경우에는 무시해도 됩니다. 오디오가 작동하지 않는 경우 마이크가 실제로 연결되어 있는지 다시 확인하세요. 이러한 메시지를 비활성화하는 간단한 방법은 없는 것 같습니다.
"ALSA lib [...] Unknown PCM" 형식의 오류에 대해서는 이 StackOverflow 답변을 참조하세요. 기본적으로 "알 수 없는 PCM 카드.pcm.rear" 형식의 오류를 제거하려면 /usr/share/alsa/alsa.conf
, ~/.asoundrc
에서 pcm.rear cards.pcm.rear
주석 처리하면 됩니다. /etc/asound.conf
.
"잭 서버가 실행되고 있지 않거나 시작할 수 없습니다." 또는 "/dev/shm/jack-1000/default/jack_0에 대한 연결(2) 호출이 실패했습니다(err=해당 파일 또는 디렉터리가 없음)" 또는 "서버에 연결을 시도했습니다." 실패했습니다." 이는 ALSA가 JACK에 연결을 시도하여 발생하므로 무시해도 됩니다. 현재로서는 마이크를 시작하는 동안 인쇄를 완전히 비활성화하는 것 외에 해당 메시지를 끄는 간단한 방법을 알지 못합니다.
ChildProcessError
발생합니다.소스 코드에서 직접 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
실행 파일은 다양한 배포판과 호환되도록 Manylinux를 사용하여 FLAC 1.3.2 소스 코드에서 빌드되었습니다.
빌드된 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
실행 파일은 모든 인코더에 대한 바이너리를 편리하게 포함하는 FLAC 1.3.2의 프런트엔드인 xACT 2.39에서 추출되었습니다. 특히 xACT2.39.zip
에 있는 xACT 2.39/xACT.app/Contents/Resources/flac
의 복사본입니다.
Uberi <[email protected]> (앤서니 장) 밥사이실롤 arvindch <[email protected]> (Arvind Chembarpu) kevinismith <[email protected]> (케빈 스미스) 하스85 딜라이트런 <[email protected]> 독보적인 kamushadenes <[email protected]> (카무스 하데네스) 스브라덴 <[email protected]> (사라 브레이든) tb0hdan (보다단 터키뉴비치) 타이닉스 <[email protected]> (스티브 도허티) beeedy <[email protected]> (브로데릭 칼린)
이슈 트래커에서 버그와 제안 사항을 보고해 주세요!
이 라이브러리를 인용하는 방법(APA 스타일):
장 A. (2017). 음성 인식(버전 3.11) [소프트웨어]. https://github.com/Uberi/speech_recognition#readme에서 이용 가능합니다.
이 라이브러리를 인용하는 방법(시카고 스타일):
장, 앤서니. 2017. 음성 인식 (버전 3.11).
또한 이 프로젝트의 이전 버전을 기반으로 하고 Baidu Yuyin에 대한 지원을 추가하는 Python Baidu Yuyin API를 확인하세요. Baidu Yuyin은 중국 내에서만 사용할 수 있습니다.
저작권 2014-2017 Anthony Zhang(Uberi). 이 라이브러리의 소스 코드는 GitHub에서 온라인으로 사용할 수 있습니다.
SpeechRecognition은 3절 BSD 라이센스에 따라 제공됩니다. 자세한 내용은 프로젝트 루트 디렉터리의 LICENSE.txt
참조하세요.
편의를 위해 SpeechRecognition의 모든 공식 배포판에는 이미 필요한 저작권 고지 및 라이센스 사본이 포함되어 있습니다. 프로젝트에서는 SpeechRecognition README에서 SpeechRecognition에 대한 라이선스 정보를 찾을 수 있다고 말하고 사용자가 보고 싶어할 경우 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
의 바이너리를 배포합니다. 이러한 파일은 GPL 조건을 충족하는 한 GPLv2 라이센스가 있으며 재배포가 가능합니다. FLAC 바이너리는 개별 프로그램의 집합체이므로 이러한 GPL 제한 사항은 라이브러리나 라이브러리를 사용하는 프로그램에는 적용되지 않고 FLAC 자체에만 적용됩니다. 라이선스 세부정보는 LICENSE-FLAC.txt
참조하세요.