Como diferenciar entre o padrão de silêncio e um padrão de sinal sonoro em sinais sonoros no iPhone OS

StackOverflow https://stackoverflow.com/questions/2237233

Pergunta

Eu estou fazendo teste de latência som. meu dispositivo vai receber tanto um sinal sonoro ou um sinal de silêncio. Como posso diferenciar entre estes sinais. Por favor me ajude. Agradecemos antecipadamente ..

Foi útil?

Solução

Depende. Se o áudio digital foi gerado sinteticamente (como por outra função) e, portanto, você pode contar com o fato de que, em um caso, você vai ter o verdadeiro silêncio digitais (amostras zerados), então a solução é simplesmente para testar as amostras zerados sobre a janela de medição. Qualquer coisa diferente de zero não é o silêncio.

Eu acho, porém, que você está lidando com áudio do mundo real gravado a partir de, digamos, um microfone. Se este for o caso, em seguida, medir a energia em uma janela de tempo e compará-lo a um limiar de fato faz sentido. Os dois parâmetros que você terá que determinar são:

  1. nível de energia Threshold
  2. O comprimento da janela de tempo

Se o limite é muito baixo, a sua taxa de falso positivo será muito alto; ruído de fundo que não é um sinal sonoro pode ser interpretada como um sinal sonoro. Por outro lado, se o seu limite é muito alta, o sistema pode categorizar um sinal sonoro como ruído. Felizmente, se você está fazendo de áudio com um razoavelmente baixo ruído de fundo, o seu desempenho não será muito sensível a este limiar.

comprimentos mais longos janela vai diminuir estas taxas de falsos positivos / negativos, tornando assim o sistema mais robusto, mas a usabilidade do sistema pode sofrer com janelas excessivamente longos. Por exemplo, sistemas de telefone automatizados classificar teclas pressionadas para navegação no menu de ajuda. Se eles necessário que o usuário para segurar cada tecla durante três segundos de cada vez, a precisão iria melhorar, mas à custa de quase toda a usabilidade.

Encorajo-vos a não tomar uma decisão baseada exclusivamente na amostra uma máxima como Paulo sugeriu. Fazendo isso mina completamente a resistência a falsos positivos fornecidos pelo comprimento da janela de amostragem.

Outras dicas

Look at cerca de 10 ms de amostras de valor (por exemplo, 441 amostras em 44,1 kHz) e medir a energia em que o tampão. Se for acima de algum limite que é um sinal e se for inferior ao limite, então é silêncio.

Para medir a energia apenas a soma do valor quadrado de cada amostra no buffer e dividir pelo número de amostras.

E se eles usam o método de volta loop, faz barulho ter em conta? Por exemplo, se eles enviam um sinal sonoro para segundo dispositivo, de auto-retorno e enviá-lo de volta para o remetente, enviar um pacote silêncio e fazer o mesmo, eles não podem medir a latência no nível remetente (desde que saiba a latência da rede real) .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top