Esta é uma biblioteca Python e uma ferramenta de linha de comando que ajuda a pesquisar uma palavra ou frase em um arquivo de áudio (formato wav). Ele também se baseia na capacidade de pesquisa inicial e fornece algumas [chamadas] habilidades de pesquisa avançadas!
Para ler a documentação, visite aqui.
Abra um terminal e digite:
pip instalar SimpleAudioIndexer
Detalhes de instalação podem ser encontrados nas documentações aqui.
Há um dockerfile incluído no repositório se você não conseguir fazer uma instalação nativa ou estiver em um sistema Windows.
Abra um terminal e digite:
pip desinstalar SimpleAudioIndexer
A desinstalação do sox, entretanto, depende se você está em um sistema Linux ou Mac. Para mais informações, visite aqui.
Digamos que você tenha este arquivo de áudio:
Faça o download para um diretório vazio para simplificar. Nos referiríamos a esse diretório como SRC_DIR e ao nome deste arquivo de áudio como small_audio.wav.
Veja como você pode pesquisá-lo.
Abra um terminal e entre.
$ sai --mode "ibm" --username_ibm NOME DE USUÁRIO --password_ibm SENHA --src_dir SRC_DIR --search "chamado" {'chamado': {'small_audio.wav': [(1,25, 1,71)]}}
Substitua USERNAME e PASSWORD pelas credenciais do IBM Watson e SRC_DIR pelo caminho absoluto para o diretório que você acabou de preparar.
A saída seria, como acima, um dicionário que contém a consulta, o(s) arquivo(s) em que ela aparece e todos os (segundo inicial, segundo final) dessa consulta.
Observe que todos os comandos funcionam uniformemente para outros motores (ou seja, Pocketsphinx), por exemplo, o comando acima pode ser inserido como:
$ sai --mode "cmu" --src_dir SRC_DIR --search "vidas" {'vidas': {'small_audio.wav': [(3.12, 3.88)]}}
O que usaria o Pocketsphinx em vez do Watson para obter os carimbos de data e hora. Observe que a qualidade/precisão do Pocketsphinx é muito inferior à do Watson.
Em vez de procurar por uma palavra, você também pode combinar um padrão regex, por exemplo:
$ sai --mode ibm --src_dir SRC_DIR --username_ibm NOME DE USUÁRIO --password_ibm SENHA --regexp " [az][az] " {você' em ': {'small_audio.wav': [(2,81, 2,93)]}, {u' para ': {'small_audio.wav': [(1,71, 1,81)]}}
Esse foi o resultado da busca por palavras de duas letras. Observe que seus resultados corresponderiam a qualquer expressão regular arbitrária.
Você também pode salvar e carregar os dados indexados do script de linha de comando. Para mais informações, visite aqui.
Digamos que você tenha este arquivo
>> > from SimpleAudioIndexer import SimpleAudioIndexer as sai
Depois, você deve criar uma instância de sai
>> > indexer = sai ( mode = "ibm" , src_dir = "SRC_DIR" , username_ibm = "USERNAME" , password_ibm = "PASSWORD" )
Agora você pode indexar todos os arquivos de áudio disponíveis chamando o método index_audio:
>> > indexer . index_audio ()
Você poderia ter um gerador de pesquisa:
>> > searcher = indexer . search_gen ( query = "called" )
>> > print ( next ( searcher ))
{ 'Query' : 'called' , 'File Name' : 'small_audio.wav' , 'Result' : ( 1.25 , 1.71 )}
Agora existem mais alguns argumentos implementados para search_gen. Digamos que você queira que sua pesquisa diferencie maiúsculas de minúsculas (por padrão, não é). Ou, digamos que você queira procurar uma frase, mas há uma lacuna de tempo e o indexador não a escolheu corretamente, você pode especificar timing_error. Ou digamos que alguma palavra esteja completamente perdida, então você pode especificar missing_word_tolerance etc.
Para obter uma lista completa, consulte a referência da API aqui
Observe que você também pode chamar o método search_all para pesquisar uma lista de consultas em todos os arquivos de áudio:
Finalmente, você poderia fazer uma pesquisa regex!
>> > print ( indexer . search_regexp ( pattern = "[A-Z][^l]* " )
{ u'Americans are ca' : { 'small_audio.wav' : [( 0.21 , 1.71 )]}}
Existem mais funcionalidades implementadas. Para explicações detalhadas, leia a documentação aqui.
Se você quiser contribuir com código ou ideias, enviar uma solicitação de bug ou dar feedback, visite o arquivo CONTRIBUTING.
Veja também a lista de colaboradores deste projeto.
Este projeto está licenciado sob a licença Apache v2.0 - consulte o arquivo LICENSE para obter mais detalhes.