cmusphinx/pocketsphinx
A small speech recognizer
PocketSphinx – 가벼우면서도 오프라인 음성 인식기
무엇인가요 – PocketSphinx는 카네기 멜론 대학에서 시작된 오픈소스 연속 음성 인식기입니다. 대규모 어휘, 발화자 독립형 음성 인식을 위한 고전적인 은닉 마르코프 모델(HMM) 디코딩을 구현하지만, 의도적으로 작고 빠르게 유지되어 저전력 장치(예: Raspberry Pi, 임베디드 리눅스, Windows)에서도 실행할 수 있습니다. 코드베이스는 C로 작성되었으며, 선택적 Python 바인딩도 제공됩니다.
왜 중요한가요 – 많은 현대의 신경망 기반 인식기들이 GPU나 클라우드 API를 필요로 하는 반면, PocketSphinx는 완전히 오프라인으로 작동하며 매우 작은 크기(수 MB)를 자랑합니다. 이는 개인정보 보호가 중요한 또는 자원이 제한된 애플리케이션(예: 음성 제어 IoT 기기, 로봇, 장치 내 음성 인식이 필요한 취미 프로젝트)에 매우 유용합니다.
설치 방법 – 이 프로젝트는 CMake를 사용하여 C 라이브러리와 pocketsphinx 명령줄 도구를 빌드합니다. Debian 기반 리눅스에서는 apt로 선택적 오디오 처리 종속성(ffmpeg, portaudio, sox 등)을 설치할 수 있습니다. 리포지토리를 클론한 후 다음을 실행합니다:
# C 라이브러리 빌드
cmake -S . -B build
cmake --build build
sudo cmake --build build --target install # 또는 -DCMAKE_INSTALL_PREFIX로 사용자 정의 경로 지정 가능
Python용으로는 가상 환경을 만들고, 최상위 디렉터리에서 pip install .을 실행합니다.
실행 방법 – pocketsphinx 실행 파일은 16비트 모노 PCM 오디오(파일 또는 stdin에서)를 읽고, 인식 결과를 줄 단위 JSON 형식으로 출력합니다. 주요 하위 명령어는 다음과 같습니다:
live– 오디오 스트림을 처리하고 음성 세그먼트를 감지하며, 각 세그먼트에 대해 JSON 객체를 출력합니다(b: 시작 시간,d: 지속 시간,p: 신뢰도,t: 전사 텍스트,w: 단어 수준 세부 정보).single– 각 입력 파일을 하나의 발화로 간주하고, 하나의 JSON 객체를 반환합니다.align– 주어진 오디오 파일을 제공된 전사 텍스트에 강제로 정렬합니다. 단어나 음소의 타임스탬프를 생성하는 데 유용합니다.soxflags– 임의의 오디오 형식을 필요한 PCM 스트림으로 변환하기 위해 필요한sox인수를 출력합니다.sox audio.mp3 $(pocketsphinx soxflags) | pocketsphinx -와 같은 파이프라인을 가능하게 합니다.
프로그래밍 – 리포지토리는 C와 Python용 예제 프로그램을 examples/에 포함하고 있습니다. C API는 Doxygen으로 문서화되어 있으며(CMake로 자동 빌드), Python API는 https://pocketsphinx.readthedocs.io 에 호스팅됩니다. Python에서 일반적인 사용 예는 다음과 같습니다:
import pocketsphinx as ps
config = ps.Decoder.default_config()
config.set_string('-hmm', '/path/to/acoustic/model')
config.set_string('-lm', '/path/to/language/model')
config.set_string('-dict', '/path/to/dictionary')
decoder = ps.Decoder(config)
decoder.start_utt()
with open('speech.wav', 'rb') as f:
decoder.process_raw(f.read(), False, True)
decoder.end_utt()
print('Result:', decoder.hyp().hypstr)
개발 및 테스트 – 프로젝트에는 레그레션/유닛 테스트 스위트(make check 또는 ctest)가 포함되어 있습니다. 문서는 로컬에서 빌드 가능합니다(cmake --build build --target docs로 C API 문서, make -C docs html로 Python 문서). GitHub Actions의 지속적 통합 워크플로우가 릴리스 및 API 문서 업데이트를 처리합니다.
라이선스 – 리포지토리 내 LICENSE 파일을 참조하세요. PocketSphinx는 BSD 스타일 라이선스 하에 배포되며, 자유로운 사용과 재배포가 허용됩니다.
PocketSphinx는 진정으로 활발히 유지보수되는 음성 인식 라이브러리로, 대규모 신경망 모델이 아닌 효율적이고 오프라인 추론에 초점을 맞춘 AI/ML 분야에 속합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트