2010-05-29 11 views
10

Tratando de averiguar por qué setloopback debe establecerse en true para detectar actividad de micrófono.Sin actividad de micrófono con setLoopBack establecido en falso - AS3

El problema es la retroalimentación de eco cuando se utiliza un macbook con un micrófono incorporado.

Si alguien tiene algunas ideas sobre esto, hágamelo saber.

En este momento estoy experimentando con la ganancia de alternancia, dependiendo de la actividad para simular la reducción de eco. No es óptimo, sin embargo.

@lessfame

+0

Tengo el mismo problema. Necesito mostrar la actividad del micrófono sin enviar el audio a los altavoces. El eco hace que la grabación de audio Flash sea inútil ... –

Respuesta

13

que estaba buscando una solución similar a éste, entonces te he encontrado que se puede aplicar una transformación de sonido de un micrófono para controlar el volumen del volumen de emitida la entrada de micrófono.

Por lo tanto, se puede hacer esto fácilmente:

var st:SoundTransform = new SoundTransform(0); 
mic.soundTransform = st; 

Sé que esta pregunta hace casi un año, pero pensé en ponerlo a cualquiera que busque una respuesta.
Cheers,
Will

4

Sé que esta es una pregunta anterior, pero acaba de encontrar el problema.

Hay un error con el códec SPEEX como se ha señalado aquí: Microphone soundTransform and SPEEX codec bug

Este error básicamente dice que el uso del códec SPEEX ignora transformar el sonido. Como solución alternativa para esto, configuré una función de alternar para cambiar la configuración del micrófono para que muestre la actividad antes de conectar el audio a un NetStream y evitar el error.

Nota: Un objeto de micrófono solo distribuye eventos de actividad cuando la aplicación está monitoreando el micrófono. Por lo tanto, si no llama a setLoopBack (verdadero), agregue un oyente para eventos de datos de muestra, o conecte el micrófono a un objeto NetStream, entonces no se envían eventos de actividad. AS3 Docs

de configuración del micrófono: (m es una variable de instancia)

m = Microphone.getMicrophone(); 
m.setSilenceLevel(0); 
m.gain = 75; 
m.setUseEchoSuppression(true); 
m.rate = 16; //rate only applies to NELLYMOSER Codec - but 16 kHz matches SPEEX default setting 
m.setLoopBack(true); //necessary to get activity 
m.codec = SoundCodec.NELLYMOSER; //this is default 
m.soundTransform = new SoundTransform(0); //mute so you don't get crazy echo! 

Toggle para 'offline' y la actividad 'en línea' monitoreo

protected function audioMeterToggle(switch:String) { 
    if(switch == "offline") { 
     m.setLoopBack(true); 
     m.soundTransform.volume = 0; 
     m.codec = SoundCodec.NELLYMOSER; 
    } else { 
     m.setLoopBack(false); 
     m.soundTransform.volume = 1; 
     m.codec = SoundCodec.SPEEX; 
    } 
} 

códecs de conmutación ayuda a reducir el ancho de banda.

Espero que esto ayude a alguien a ahorrar algo de tiempo.

Cuestiones relacionadas