Arquivos

Arquivo para a categoria ‘DSP’

Basic About Synthesizer

Olá Pessoal !

Vocês já se perguntaram como um determinado áudio é sintetizado ?

Pois bem, participei de um curso ministrado pelo professor Steve Everett diretor do  Centro de Pesquisa de Música na Emory University, ele desenvolve vários métodos computacionais para modelar e produzir músicas, minha área de análise em sinais possui pouca relação na produção de áudio, a produção de áudios em si não é um campo que me desperte interesse, mas durante o curso o Steve falou sobre sintetizadores e fiquei curioso em saber como um teclado consegue simular vários tipos de instrumentos …

Cada instrumento musical possui uma determinada sonoridade, você percebe claramente uma grande diferença tonal da mesma nota quando tocada em instrumentos diferentes, por exemplo a nota Lá(A4 – quarta oitava) produz 440Hz em qualquer instrumento seja ele um violão ou em um teclado, se a frequência é sempre a mesma o que faz esta diferença tonal acontecer ?

Temos que lembrar que quando uma nota é tocada diferentes harmônicos acontecem e estes definem qual tonalidade a frequência fundamental vai tomar, ou seja qual corpo ela vai ter, a coleção de harmônicos em conjunto com a frequência fundamental define qual timbre um instrumento tem, lembrando que a Freqüência Fundamental é sempre a frequência com a maior percepção audível, os harmônicos são produzidos por diversos fatores, madeira do instrumento, cordas do instrumento, a cola usada no instrumento, a nota ecoa por toda arquitetura do instrumento que produz um som particular …

Pensando nisso peguei uma nota gravada de um violão e apliquei Fourrier para verificar quais Harmônicos ocorriam, este é um método que descreve o principio básico de como os sintetizadores são feitos, o método que usei recria as frequências e suas respectivas magnitudes a partir de um sinal amostrado, em meus testes o sinal é recriado utilizado Senoide, cada Frequência e Magnitude(Linear) capturado do espectro de magnitude da Transformada de Fourrier é somada formando um sinal complexo, existem outras formas de ondas ( pulso, triangular, quadrada, dente-de-serra), cada uma delas pode ser usada afim de conseguir timbres mais parecidos para determinados tipos de instrumentos , Vejam uma figura que demonstra o tipo de cada onda:

Em meus testes usei a onda “Sine”, escute um exemplo de áudio deste tipo de onda com Freqüência de 1000Hertz:


Conforme novos  Harmonicos são adicionados (Somados) o áudio tende a mudar, vejam na figura abaixo no lado direito você verá o Espectro de Magnitude do Áudio Original e do lado esquerdo o áudio sintetizado, reparem na semelhança dos harmônicos:

D_Guitar

Audio Original:

Audio Sintetizado:

A Nota D  da corda do violão elétrico ficou bem parecida :-)

Vamos ver como a forma de onda Sine se sai com uma nota lá A4 do piano :

Piano_La

Audio Original:

Audio Sintetizado:

O áudio sintetizado para piano não se saiu muito bem utilizando Senoide, faz sentido já que possui melhores resultados em sinais mais graves !

Até agora vimos tentativas de sintetizar sinais com poucos harmônicos ocorrendo, vamos testar com um sinal bastante complexo com vários harmônicos acontecendo em diferentes magnitudes, vamos tentar sintetizar um áudio com voz :

VOZ

Audio Original:

Audio Sintetizado:

Por ser um sintetizador bem básico feito em duas horas no matlab até que se saiu bem :-)

Não tive tempo de organizar e limpar o código,  se houver interesse dos leitores neste tipo de “brincadeira” posso liberar o source!

[]‘s

Eng Eder de Souza

CategoriasDSP, Programação Tags:,

Audio spectrum Analyzer

fevereiro 7, 2013 Deixe um comentário

Oi Pessoal !

Minha história com o Analisador de Espectro de Frequências é bem antiga, tudo começou em meados da década de 90 eu era praticamente uma criança,  me lembro claramente que nesta época um player de áudio dominava os computadores com windows 95 o clássico winamp, pois bem eu me deliciava acompanhando  as músicas junto com as “barras” que se moviam conforme a música evoluía, associava cada batida , cada voz, cada timbre, com o então na época chamado por mim “barras do winamp’  e em minha mente tentava entender como  aquelas “Barras” pareciam literalmente dançar com a música. A curiosidade aumentou quando meu pai comprou um micro system da aiwa ele tinha uma grande tela frontal com um analizador de espectro, o tempo foi passando e fui entendendo como um analisador de espectro de frequência funciona !

Na realidade tudo é bem simples, o que “eles” fazem é separar as bandas das frequências discretas retornadas pela transformada de Fourier, lembrando que a faixa de frequência possível para análise sempre dependerá da taxa de amostragem do sinal de áudio, claro estes visualizadores de espectros (Aiwa, Sony, winamp, etc) possuem apenas um caráter estético e muitos deles não mostram na realidade as frequências precisas e onde realmente elas estão acontecendo!

A faixa de frequência audível de um ser humano é de 20hz até 20Khz, então para construir um analisador de espectro que atenda as características audíveis do ser humano teremos que ter um sinal de áudio com uma taxa de amostragem igual ou superior 44100hz, seguindo o Teorema de Nyquist “A frequência de amostragem de um sinal analógico, para que possa posteriormente ser reconstituído com o mínimo de perda de informação, deve ser igual ou maior a duas vezes a maior frequência do espectro desse sinal“, então sé temos uma frequência de amostragem de 44100 e dividir por 2 -> 44100/2 = 22050, opa este valor atende a maior frequência audível do ser humano, lembre, se você trabalhar com taxa de amostragem menor poderá estar perdendo informações(Análise) de frequências que  estão em nosso campo audível, pronto já sabemos qual é a maior frequência que nosso analisador de espectro  é capaz de alcançar  é de 22050hz, agora precisamos decidir qual será a ordem de resolução da  frequência, quanto menor a ordem mais apurado seu analisador será, porém exige muito mais processamento ao computar a transformada de fourier, estou utilizando 4096 pontos isto me dá uma resolução de ordem = 10,7666015625, isto quer dizer que podemos estar perdendo em algum ponto a precisão das frequências capturadas na ordem perto de 11hertz, o que considero bem aceitável para o que precisamos aqui, ao computar a Transformada Fourier precisamos calcular a raiz quadrada da soma do quadrado dos seus componentes reais e imaginários e isso nós dá a magnitude do coeficiente de FFT para cada frequência.  OK com isso agora sabemos que nossa menor frequência possível de ser capturada será de  44100/ 4096 = 10,7666015625hz e a nossa maior frequência possível de ser capturada será de  22050hz. Legal lembre-se que ao computar a transfonada de fourier utilizando 4096 pontos teremos que sempre remover a segunda metade dos resultados pois é apenas um espelho dos resultados da primeira metade, então como resultado teremos 4096 /2 = 2048 frequências discretas retornadas, com isto você saberá quais serão todas as suas 2048 bandas de frequências:

1 -> 10,7666015625000

2 -> 21,5332031250000

3 -> 32,2998046875000

4 -> 43,0664062500000

5 -> 53,8330078125000

2047 -> 22039,2333984375

2048 – > 22050

Reparem que entre a mínima e a máxima ainda estamos dentro da faixa audível humana !

O retorno destes 2048 pontos já é o seu espectro de frequência, você ainda pode converter os resultados em escala logarítmica  ou manter na escala linear, vai depender de sua necessidade ou seja se a amplitude do sinal precisa estar definida em decibéis ou não,  fiz um protótipo em python, na realidade o protótipo funciona como um player de arquivos .wav com canais em  mono, o protótipo funciona apresentando o Espectro de Frequência em real time  enquanto um áudio é executado,  veja o teste da escala audível humana !

Legal Funciona direitinho :-)

Veja ele funcionando com uma música sendo tocada !

É bastante interessante analisar e ver como certas notas produzem harmônicos que ressoam em diferentes frequências que na realidade define a característica do timbre !

Até a próxima !

Eder

Audio Beat Track

outubro 21, 2012 Deixe um comentário

Oi Pessoal, faz tempo que não olho com carinho para o blog, desculpem pelo “gap” !

Já perceberam que ando trabalhando bastante com análise de sinais e todas as vezes que venho aqui escrever tento abordar o assunto da maneira mais simples possível, a idéia é sempre deixar o leitor curioso de como as coisas funcionam …

Hoje vamos falar de “Beat Track” esta é mais uma das várias caracteristicas de extrações de audio, com ele podemos estimar quantas batidas por minuto um determinado sinal de áudio possui, andei lendo alguns modelos de como extrair esta informação, acabei desenvolvendo um código em matlab para este propósito!

Como chegar lá?

Vamos “Brincar” com este arquivo de áudio

Primeiro precisamos decompor o sinal em várias sub-bandas, escolhi seis sub-bandas descrito por “Scheirer 1998″ (200, 400, 800, 1600, 3200, 6400), apliquei filtro de passa altas e passa baixas para extrair as seis sub-bandas !

Vejam as seis sub-bandas extraidas do áudio:

Após este passo segui um modelo descrito por “George Tzanetakis 2001″ no artigo “Tempo Extraction using Beat Histograms”, seu documento descreve um modelo bastante robusto utilizando envelope (envoltória) e autocorrelação, a partir de uma forma de onda de áudio o envelope pode ser calculado, a forma de onda nos mostra a variação de amplitude do áudio ao longo do tempo, bastante útil para o uso deste caso na qual nos mostra exatamente onde os picos das batidas do som ocorre!
Aplicando o Envelope em cada sub-banda extraida temos:

Reparem a relação entre as formas de onda de cada sub-banda e seus respectivos envelopes, agora se somarmos todos os envelopes teremos uma informação bastante consistente das batidas que este áudio possui, veja a soma:

Agora ficou relativamente simples ver onde todas as batidas do áudio ocorre, se você escutar o áudio certamente conseguirá acompanhar no gráfico acima onde as batidas da música estão acontecendo…

O Audio que estamos “brincando” possui cerca de 10 segundos, eu o calculei como tendo 128 batidas por minuto utilizando meu código, mas será que está certo ? utilizei 10 segundos de áudio pois é mais fácil ver onde as batidas estão acontecendo, perceba também que preferi pegar um áudio que possui uma batida bastante perceptível, vamos tentar calcular na mão e ver se conseguimos um valor parecido?

Estamos vendo claramente que o gráfico acima possui todas as batidas que ocorrem no arquivo de áudio com cerca de 10 segundos de gravação, o gráfico possui 21 picos, então podemos pressupor que se a evolução deste gráfico nao mudar  durante 60 segundos teremos 126 batidas por minuto, acompanhe:

Temos 10 segundos de áudio, 1 minuto = 60 segundos, 60 segundos dividido por nossos 10 segundos de áudio é igual a 6, 6 vezes 21 picos será igual 126 batidas por minuto, bem proximo do valor correto que é de 128 batidas …

Bom, tornei o código publico aqui, escrevi em matlab parece ser bastante robusto !

Eng Eder de Souza

CategoriasDSP, Programação Tags:,

AutoTune

maio 25, 2012 1 comentário

Olá pessoal!

AutoTune faz a correção dos pitches automaticamente em um sinal de áudio,  e claro a industria da música nunca foi a mesma desde sua invenção !

Hoje em dia ele é amplamente utilizado em músicas populares, certamente você já deve ter notado um efeito diferente na voz dos cantores note-americanos, eles utilizam o AutoTune excessivamente em algumas músicas …

Chegamos a um nível tao elevado que hoje em dia existe a possibilidade de se mudar o Pitch em qualquer pedaço do frame de um sinal, isso permite por exemplo que ao tocar um piano se em algum momento uma nota soar errado não precisamos mais descartar a gravação e podemos alterar o valor desta nota para a forma correta .

Grosseiramente falando o AutoTune permite que qualquer pessoa fique afinada ao cantar, costumo fazer a seguinte comparação: “Hoje em dia todas as revistas usam photoshop nas modelos de capa de suas revistas para corrigir imperfeições, do mesmo modo os produtores utilizam do AutoTune ou Pitch Correction para garantir melhor qualidade no produto final”.

Sempre sonhei em construir um AutoTune em real-time para diversão, alguns dos motivos que sempre me impediram de fazer isso em Python é a necessidade de um intensivo processamento nas operações, a performance em Python não é um ponto forte da linguagem, dois pontos cruciais para o desenvolvimento do AutoTune exigem cálculos que consomem bastante tempo do processador, tornando a latência para uso em real-time impraticável. Primeiro precisamos de um excelente algoritmo que faça Pitch detection após encontrar as frequências precisaremos força-las a mudar quando necessário utilizando Pitch Shift , eu testei alguns modelos em Python Puro e a latência em cada bloco de frames ficou muito alto.

Sempre que preciso de muito desempenho apelo para a linguagem C, e para a minha sorte encontrei um código escrito por Tom Baran, Olhei o source e pensei vou portar como módulo para python, e assim fiz um módulo chamado PyAutoTune, Tom Baran captura o sinal em float 32Bits para conseguir um resultado mais apurado na detecção do Pitch, o desempenho ficou melhor do que esperado a latência é imperceptível, a instalação do módulo é simples e pode ser feita com um simples “python setup.py install”, escrevi dois sources simples para exemplificar como utilizar o módulo, você pode encontra-los na pasta Exemples.

Source: https://github.com/ederwander/PyAutoTune

Eng Eder de Souza

CategoriasDSP, Programação Tags:,

Desafio: Hide information in audio files

Já faz muito tempo que comentei sobre Esteganografia aqui no blog, na época estava testando diferentes meios de se esteganografar imágens dentro de arquivos de áudio, isso faz tanto tempo que nem me lembrava mais, porém neste fim de semana estava procurando em meio a minha bagunça um antigo pendrive com alguns arquivos de áudios, e olha o que encontro ?

Um Arquivo chamado “FantasiaSteganografado.wav”, me lembrava vagamente que por volta do ano de 2010 tinha criado um arquivo de áudio com informação binária oculta, escutei o arquivo e o áudio estava normal, logo acima um outro arquivo “FantasiaOriginal.wav” escutei o arquivo e também normal, os dois arquivos possuem exatamente o mesmo tamanho 15,7MB, ambos também possuem 3,57 Minutos, só tem um detalhe, dentro de um deles existe uma imágem, fiquei tentando lembrar mas nada me vinha em mente, corri entao para um antigo repositório de códigos feitos por mim e “bannnnn” lá estava todo o código, ao olhar tudo se esclareceu um repentino flash como um grande clarão me fez relembrar :-) ;

Na Época estava muito curioso em saber como os mal intencionados conseguiam colocar informações ocultas dentro de arquivos de áudio, curioso como sempre me lembrei que lí alguns artigos para entender e construir veja alguns interessantes aqui e aqui;

O DCT(Transformada Discreta de Coseno) é amplamento utilizado como modelo de compressão, e claro os espertinhos utilizam este modelo para inserir (injetar) informações binárias dentro de arquivos de áudio ou imágens, parece complexo mas o código é muito simples e por motivos de segurança não irei postar como injetar estes dados;

Estou divulgando o arquivo Original e o Esteganografado por mim, então lá vai um desafio você consegue recuperar a imágem dentro do arquivo de áudio ?

Dica:

  • Compare os dois arquivos e encontre o inicio e o fim dos frames com diferença;
  • Eu inseri uma imágem .bmp em preto e branco de tamanho 380 x 110; use este tamanho para reconstruir sua matriz de pixels;

Você se acha capaz de reconstruir minha imágem ?? baixe os dois arquivos aqui:

Use a linguagem que melhor lhe atender !

Eng Eder de Souza

CategoriasDSP, Programação Tags:,

Chromagram

Método para obtenção de caracteristicas em um sinal de audio,  robusto e atualmente utilizado em reconhecimento de acordes músicais, reconhecimento de covers e para encontrar similaridade em pedaços de áudios.

Enquanto um spectrograma é capaz de nos mostrar a variação da intensidade, magnitude de um sinal para cada frequencia no decorrer do tempo, o Chromagrama consegue nos informar a distribuição da energia representados por 12 possíveis notas chamadas de escala cromática, comumente  classificados como “c, c#, d, d#, e, f, f#, g, g#, a, a#, b”.

Para conseguir esta informação teremos que reestruturar nosso espectrograma.

Antes de qualquer coisa teremos que efetuar o resample ou downsample do Sinal de áudio, fiz alguns testes usando resample ou seja convertendo qualquer sample rate para 11025 Hz, achei  este processo um pouco lento e então decidi fazer o downsample usando “Decimation” que de quebra já me faz um filtro por Low-pass e anti-aliasing, como o nome já sugere o downsample a grosso modo “joga fora” algumas amostras do sinal, o decimation trabalha usando um fator inteiro, portanto se meu sinal original possui  44100 Hz de sample rate e se preciso que este sinal vá para 11025 Hz de sample rate terei que ter um Fator=4 ou seja 44100/4 = 11025.

Após estes passos poderei  adquirir o espectrograma aplicando 2048 frames, para computar o chromograma precisarei converter o spectrograma  de domínio da freqüência para pitch do domínio, isto é feito aplicando Logarithmic Frequency assim poderemos mapear os 12 elementos de interesse.

E finalmente teremos nosso chromagrama com 12 posições, uma para cada nota no decorrer do tempo…

Escrevi algo conceitual em python deixei o código o mais limpo possível para melhor entendimento, estou plotando os resultados com o matplotlib, importante dizer que o matplotlib não aguenta plotar arrays muito grandes portanto para os meus testes utilizei arquivos de audios pequenos em torno de 30 segundos, seguindo esta linha recortei 28 segundos iniciais da música “Def Leppard – Animal”, e ai esta o resultado do Script.

Image

Source em:

https://github.com/ederwander/Chromagram/blob/master/Chromagram.py

Python Smith Trigger for frequency analysis

fevereiro 29, 2012 Deixe um comentário

Olá Galera estava eu olhando alguns sources para análise de frequências quando me deparo com algo inesperado, seria possível extrair frequências de um sinal aplicando o modelo descrito pelo cientista Otto H. Schmitt em 1934, e pelo que vejo realmente parece ser possível, olhando com calma o códio em C++ de Mario Lang em http://delysid.org/tuneit-0.3.tar.gz, percebi que ao estimar o período do sinal seria possível calcular a frequência fundamental, não é muito robusto mas é extremamente rápido e pode ser uma alternativa para captura de frequências em áudios que possuam sinusoides puras.

Eu compilei o source em linux para testes e vi o quanto ele era simples, e então portei o algoritmo para Python.

Mais detalhes sobre http://en.wikipedia.org/wiki/Schmitt_trigger

Source aqui: https://gist.github.com/1944257

CategoriasDSP, Programação Tags:,

Google Speech + Python + Asterisk

janeiro 16, 2012 60 comentários

Olá Povo que acompanha o blog :-)

Ainda falando sobre reconhecimento da fala utilizando o google, enviei uma mensagem na lista AsteriskBrasil onde expressava minhas idéias de como utilizar o serviço de reconhecimento de fala do google em tempo real com o Asterisk,  já se passou quase uma semana sem se quer um suspiro de interesse, então resolvi seguir sozinho !

A idéia é utilizar EAGI para controle do canal de entrada de áudio em conjunto com o File Descriptor, o Asterisk entrega o áudio em formato RAW diretamente no File Descriptor 3, então podemos utilizar esta informação da maneira que acharmos conveniente, para este caso a manipulação se torna muito prática, o que me desprende totalmente das APP’s prontas para gravações inseridas no Asterisk Ex. Record, nada melhor do que ser livre para voar, é claro várias análises se tornam possíveis com isso e o leque de aplicações possíveis se tornam infinitas.

Você certamente já pensou em ter um PABX com funcionalidade para reconhecimento da fala então certamente irá precisar partir para soluções cooporativas e caras certo???

A Partir de hoje não !

Tudo que irá precisar é ter internet para acessar o google o Script possue algumas dependencias:

https://github.com/ederwander/Asterisk-Google-Speech-Recognition/blob/master/README

Estou usando novamente o módulo audiolab para efetuar o encode do áudio em FLAC, caso exista alguma dificuldade para a instalação deste módulo poderei pensar em adaptar o código para uso externo do sox ou flac.

Como ele funciona?

  • Atende uma ligação
  • O usuário tem no máximo 10 segundos para efetuar a fala
  • Caso nao encontre atividade de voz encerra com timeout
  • Estratégia para atividade de voz verdadeira para os seguintes valores  RMS > 15 e Pitch > 75
  • Se atividade for encontrada o usuário poderá falar por no máximo 10 segundos
  • O script verifica blocos em tempo real com amostras de 1 em 1 segundo e verifica se a fala cessou
  • Caso sim o script interrompe a gravação automáticamente e envia o que foi gravado para o google
  • Caso não o script continua o seu curso até seu máximo de 10 segundos
  • Apos encontrada a resposta da fala no google o script seta a variável “GoogleUtterance”

 

Telas:

 

 

Source em:

https://github.com/ederwander/Asterisk-Google-Speech-Recognition

Simple VAD (Voice activity detection) Based in Threshold Energy

janeiro 10, 2012 3 comentários

Fim das Férias…

Post passado mostrei um exemplo simples de como integrar o Voice Search do google usando Python, comentei que seria interessante desenvolver um VAD para automatizar o processo etc, e então no final do ano passado desenvolvi um novo protótipo, escrevi algo bem simples para adquirir o conceito, e em cada passo da implementação me deparava com um problema, a maneira mais básica para identificar a atividade de sons é por meio do RMS (Root mean square), com ele conseguimos medir a magnitude do sinal, isso nos dá a possibilidade de calcular o volume em um grupo de frames no sinal e o pesadelo começa aqui como encontrar um valor global para definir o que é silencio ou não ???

As Variáveis são muitas e mais uma vez qualquer componente externo pode atrapalhar nos resultados, Qualidade do Microfone,  Nível do Volume e Boost configurados para o seu Microfone, etc.

Pensando em amenizar o problema inclui um Simples Extrator de Tom para tentar encontrar frequências maiores do que 80 Hz, a voz humana é capaz de reproduzir sons que vão de 80 até 1100Hz, para trabalhar em real-time o desempenho é fundamental então parti para um extrator de Freqüência bem veloz apesar de não funcionar com muita eficiência em ondas complexas utilizar zero-crossing se torna útil para este projeto.

No projeto passado para efetuar as conversões em .flac utilizei a biblioteca audiolab, o audiolab é excelente para Linux, mas neste novo projeto iniciei os testes em solo Windows e tive muitas incompatibilidades, resolvi então utilizar um binário externo para efetuar os encodes (flac.exe) você pode baixar no seguinte link.

Como o protótipo funciona?

  • Ao Executar ele fica escutando o sinal de áudio do microfone
  • Ao perceber atividade de voz inicia a gravação
  • Ao iniciar a gravação continua analisando os últimos blocos dos frames para tomar a decisão se a fala cessou ou não
  • Se cessou finaliza a entrada de áudio converte para .flac e envia para o google neste caso o framerate já esta no formato correto pois a gravação feita pelo microfone já se encontra em 16000.

Para o meu caso consegui melhores resultados configurando meu microfone no windows com 100% de nível e com boost de +10dB

Tela:

Source:

https://gist.github.com/1589531

Eng Eder de Souza

Accessing the Google Speech API + Python

novembro 6, 2011 26 comentários

Olá Pessoal…

Se você possue um iphone 4S já  ouviu falar do SIRI, ele é um assistente pessoal que lhe auxilia respondendo questões, tudo isso é feito por meio de Voz utilizando-se o reconhecimento da Fala, suas perguntas são transcritas em texto e analisadas pelo Siri  que lhe responde por meio de um TTS (Text-To-Speech) , desenvolvedores do Android logo apareceram com um rival chamado de IRIS (Intelligent Rival Imitator of Siri), quando se utiliza destas aplicações sentimos que algo mágico acontece, como ambos reconhecem com tamanha precisão uma frase inteira?? Certamente ambos os métodos possuem modelos baseados em Hidden markov model (HMM), algo que demanda muito tempo, pesquisa e estudo para classificar padroes previamente treinados.

Mas espere os desenvolvedores do IRIS dizem que a aplicação para o Android foi feita em apenas 8 horas de trabalho, humm, olhando mais a fundo você logo percebe que o aplicativo acessa a API do google para reconhecimento de fala, até então este recurso do google chamado de “Voice Search” disponível apenas para navegadores Chrome funciona como um complemento onde se disponibiliza um ícone (microfone) nos campos de busca do navegador para efetuar qualquer tipo de procura utilizando a fala.

Claro que os mais observadores logo pensam “um complemento é capaz de fazer tudo isso??”, mas é claro que não, ele apenas grava o sinal capturado pelo microfone e envia para um servidor central do google. Tudo é gravado em um formato .flac com um sample rate de tamanho 16000.

Fiz algo bem simples em python nao gastei nem 2 horas de brincadeira o script pega um arquivo pré-gravado .wav converte para o frame rate utilizado pelo google de 16000, logo após converte o arquivo em formato .flac, envia para o google e pega a resposta da frase ou palavra que você falou no arquivo. Quiz deixar o scrpit o mais independente possível sem precisar de programas externos para conversões.

O proximo passo é fazer tudo isso em realtime sem necessitar de arquivos pré-gravados, o correto é fazer um algoritmo para VAD (Voice activity detection) que inicia o processo de gravação do audio em realtime quando alguma atividade de voz é encontrada, assim será necessário sempre verificar a energia do sinal para saber o momento que a uma palavra ou frase acaba para encerrar o processo de gravação, quem sabe se tiver tempo posso escrever, por enquanto fiquem com a minha primeira versão.

Source em:

https://gist.github.com/1342497

Update Python Google Speech API and VAD here !

Eng Eder de Souza

CategoriasDSP, Programação Tags:,
Seguir

Obtenha todo post novo entregue na sua caixa de entrada.