Código original tomado de https://code.google.com/p/wami-recorder/ (bajo la licencia del MIT)
Actualizaciones de código, ajustes para jQuery y algunas correcciones de Ignacio Santolin
Al momento de escribir este artículo, la mayoría de los navegadores aún no admiten GetUsermedia de WebRTC ()
http://caniuse.com/#search=stream
Lo que promete dar acceso al micrófono a los desarrolladores web a través de JavaScript. Este proyecto logra la siguiente mejor opción para los navegadores que admiten Flash. Usando la grabadora WAMI, puede recopilar audio en su servidor sin instalar ningún software de servidor de medios patentado.
La grabadora WAMI utiliza una aplicación Flash de peso ligero para enviar audio de cliente a servidor a través de una publicación HTTP estándar. Además de la configuración de seguridad para permitir el acceso al micrófono, toda la interfaz se puede construir en HTML y jQuery.
La aplicación Flash expone la mayoría de sus parámetros y funcionalidad importantes al JavaScript.
Wami.startRecording(myRecordURL);
Wami.stopRecording();
Wami.startPlaying(anyWavURL);
Wami.stopPlaying();
Puede usar la biblioteca SWFObject bien respetada para incrustar la aplicación Flash y luego acceder a ella de la misma manera que nuestro código de ejemplo. Eche un vistazo a nuestra página de peculiaridades para familiarizarse con las idiosincrasias de Flash y JavaScript en diferentes navegadores y sistemas operativos.
Si desea modificar el contenido Flash, puede descargar el SDK FLEX GRATUITO y compilarlo desde la línea de comandos. Para un IDE completo, sus opciones gratuitas son más limitadas. Para uso académico, como recopilar audio para un estudio a través de Amazon Mechanical Turk, puede registrarse para una licencia educativa gratuita de Adobe Flash Builder.
Si desea recopilar audio del navegador, no se puede evitar la necesidad de alojar su propio servidor. Sin embargo, una característica clave de este proyecto es que no hay necesidad de configurar un servidor de medios Flash completo solo para recopilar audio desde la web. Puede elegir cualquier tecnología del lado del servidor que prefiera. Podría, por ejemplo, alojar este script PHP simple en Apache2:
ejemplo/server/php/writeaudio.php
Observe que este código opcionalmente toma un parámetro de consulta de URL para especificar un nombre de archivo. Con los permisos apropiados, el código PHP escribirá un archivo con este NAM al disco. Puede pasar un nombre de archivo diferente cada vez que grabe para distinguir entre usuarios individuales, sesiones y expresiones. Es posible que desee usar números aleatorios generados en JavaScript y cookies almacenados en el navegador para rastrear a los usuarios a través de las recargas del navegador y nombrar sus archivos correspondientes. Cabe señalar que el ejemplo anterior sufre problemas de seguridad, y probablemente debería modificarse para la implementación real.
Wami.startRecording('http://localhost/test.php?name=USER.SESSION.UTTERANCE.wav');
Se produce una ligera complicación si la URL que usa para reproducir o grabar no apunta al mismo host que sirve al archivo SWF. En ese caso, deberá servir un CrossDomain.xml en la raíz del host desde el que se sirve o grabado el audio.