이것은 오디오 파일(wav 형식) 내에서 단어나 구문을 검색하는 데 도움이 되는 Python 라이브러리 및 명령줄 도구입니다. 또한 초기 검색 기능을 기반으로 구축되었으며 일부 [소위] 고급 검색 기능을 제공합니다!
설명서를 읽으려면 여기를 방문하세요.
터미널을 열고 다음을 입력하세요.
pip 설치 SimpleAudioIndexer
설치 세부 사항은 여기 문서에서 확인할 수 있습니다.
기본 설치를 수행할 수 없거나 Windows 시스템을 사용하는 경우 저장소에 dockerfile이 포함되어 있습니다.
터미널을 열고 다음을 입력하세요.
pip 제거 SimpleAudioIndexer
그러나 sox 제거는 Linux 또는 Mac 시스템을 사용하는지에 따라 다릅니다. 자세한 내용을 보려면 여기를 방문하세요.
다음 오디오 파일이 있다고 가정해 보세요.
단순화를 위해 빈 디렉터리에 다운로드했습니다. 해당 디렉토리를 SRC_DIR이라고 하고 이 오디오 파일의 이름을 small_audio.wav라고 합니다.
이를 통해 검색하는 방법은 다음과 같습니다.
터미널을 열고 들어가세요.
$ sai --mode "ibm" --username_ibm USERNAME --password_ibm PASSWORD --src_dir SRC_DIR --search "call" {'부름': {'small_audio.wav': [(1.25, 1.71)]}}
USERNAME 및 PASSWORD를 IBM Watson의 자격 증명으로 바꾸고 SRC_DIR을 방금 준비한 디렉터리의 절대 경로로 바꾸세요.
out은 위와 같이 쿼리가 있는 사전, 쿼리가 나타나는 파일 및 해당 쿼리의 모든 것(시작 두 번째, 끝 두 번째)이 됩니다.
모든 명령은 다른 엔진(예: Pocketsphinx)에서도 동일하게 작동합니다. 예를 들어 위 명령은 다음과 같이 입력할 수 있습니다.
$ sai --mode "cmu" --src_dir SRC_DIR --"생명" 검색 {'살아있는': {'small_audio.wav': [(3.12, 3.88)]}}
타임스탬프를 얻기 위해 Watson 대신 Pocketsphinx를 사용합니다. Pocketsphinx의 품질/정확도는 Watson보다 훨씬 낮습니다.
단어를 검색하는 대신 정규식 패턴을 일치시킬 수도 있습니다. 예를 들면 다음과 같습니다.
$ sai --mode ibm --src_dir SRC_DIR --username_ibm USERNAME --password_ibm PASSWORD --regexp " [az][az] " {u' in ': {'small_audio.wav': [(2.81, 2.93)]}, {u'에서 ': {'small_audio.wav': [(1.71, 1.81)]}}
두 글자 단어를 검색한 결과였습니다. 결과는 임의의 정규 표현식과 일치합니다.
명령줄 스크립트에서 색인화된 데이터를 저장하고 로드할 수도 있습니다. 자세한 내용을 보려면 여기를 방문하세요.
이 파일이 있다고 가정해 보세요.
>> > from SimpleAudioIndexer import SimpleAudioIndexer as sai
그런 다음 sai의 인스턴스를 생성해야 합니다.
>> > indexer = sai ( mode = "ibm" , src_dir = "SRC_DIR" , username_ibm = "USERNAME" , password_ibm = "PASSWORD" )
이제 index_audio 메소드를 호출하여 사용 가능한 모든 오디오 파일의 색인을 생성할 수 있습니다.
>> > indexer . index_audio ()
검색 생성기를 가질 수 있습니다.
>> > searcher = indexer . search_gen ( query = "called" )
>> > print ( next ( searcher ))
{ 'Query' : 'called' , 'File Name' : 'small_audio.wav' , 'Result' : ( 1.25 , 1.71 )}
이제 search_gen에 대해 구현된 인수가 꽤 더 많습니다. 검색에서 대소문자를 구분하고 싶다고 가정해 보겠습니다. 기본적으로는 그렇지 않습니다. 또는 문구를 찾고 싶었지만 타이밍 차이가 있어서 인덱서가 이를 올바르게 선택하지 못했다고 가정하면 timing_error를 지정할 수 있습니다. 또는 일부 단어가 완전히 누락되었다고 말하면 Missing_word_tolerance 등을 지정할 수 있습니다.
전체 목록을 보려면 여기에서 API 참조를 확인하세요.
search_all 메소드를 호출하여 모든 오디오 파일 내에서 쿼리 목록을 검색할 수도 있습니다.
마지막으로 정규식 검색을 수행할 수 있습니다!
>> > print ( indexer . search_regexp ( pattern = "[A-Z][^l]* " )
{ u'Americans are ca' : { 'small_audio.wav' : [( 0.21 , 1.71 )]}}
더 많은 기능이 구현되었습니다. 자세한 설명은 여기에서 설명서를 읽어보세요.
코드나 아이디어를 제공하거나 버그 요청을 제출하거나 피드백을 제공하려면 CONTRIBUTING 파일을 방문하세요.
이 프로젝트의 기여자 목록도 참조하세요.
이 프로젝트는 Apache v2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.