Saltar para el contenido principal

Aparatos de entrada/salida de audio

El SDK permite el uso de varios dispositivos de entrada de audio, incluyendo micrófonos USB externos como SpeechMike®.

Elegir un dispositivo

Los dispositivos de audio se pueden elegir tanto durante el inicio del SDK como en tiempo de ejecución, mientras la aplicación se está ejecutando.

Durante la inicialización

Puede configurar el dispositivo de entrada de audio durante el inicio del SDK a través del atributo input pasado al método init():

var recognition = new IaraSpeechRecognition();

// Inicializa el SDK
recognition.init({
userId: 'mi@email.com',
apiToken: '197765800edb8affcb44a7ae7b4ff0a3',
input: 'auto' // Dispositivo de entrada de audio
});

Los sistemas operacionales y los navegadores tienen requisitos únicos de privacidad y funcionamiento de captura de audio. Por esta razón, el sdk descarta las posibles complicaciones a través de la opción input: 'auto' (default), que es la selección automática del dispositivo de entrada.

Si input: 'auto' es utilizado como dispositivo de entrada de audio, el SDK intentará configurar el mejor aparato de entrada para el ambiente del usuario con la menor interacción posible.

Consejo: Si input no se informa en la inicialización, se utiliza input: 'auto'. Esta es la forma más flexible de elegir el dispositivo de entrada de audio.

Con el uso de input: 'auto', por ejemplo, si un SpeechMike® se encuentra en alguna entrada USB, el SDK intentará utilizarlo. En las computadoras Mac, por ejemplo, dependiendo de la versión del sistema operativo, la captura de audio puede realizarse sin la interacción del usuario, o a través del navegador con la interacción del usuario.

En estos casos, en que el SDK no puede configurar el dispositivo de captura de audio sin la intervención del usuario, se emitirán los avisos necesarios, por ejemplo, solicitar al usuario que autorice la captura de audio mediante del micrófono accesible por el navegador.

Forzar la iniciación con un dispositivo de audio en particular

Si su aplicación depende de un dispositivo de entrada específico, usted puede forzar su selección durante la iniciación. El ejemplo siguiente requiere un SpeechMike® como dispositivo de entrada, produciendo un error de inicio cuando no está disponible:

var recognition = new IaraSpeechRecognition();

// Inicializa el SDK
recognition.init({
userId: 'mi@email.com',
apiToken: '197765800edb8affcb44a7ae7b4ff0a3',
input: 'speechmike' // forza a utilizar SpeechMike® como
// dispositivo de entrada de audio
}).fail(function(e) {
console.error('Dispositivo de entrada SpeechMike® no está disponible!');
});

Dispositivos disponibles al iniciar

La siguiente tabla muestra la lista de valores que pueden utilizarse en el atributo input pasado al método init().

NombreValor de inputDescripción
Selección automáticaautoEl SDK selecciona el mejor dispositivo de entrada de audio con una interacción mínima del usuario.
SpeechMikespeechmikeMicrófono externo USB SpeechMike®.
Micrófono de sistemaosmicEl dispositivo de entrada de audio estándar del sistema, por ejemplo, el micrófono frontal del portátil. Si se utiliza osmic, el usuario no necesitará autorizar la captura de audio porque no será realizada por el navegador, sino a nivel del sistema operacional.
Micrófono del navegadorbrowsermicEl dispositivo de entrada de audio estándar proporcionado por el navegador mediante la llamada navigator.mediaDevices.getUserMedia(). Si se utiliza browsermic, el usuario deberá autorizar la captura de audio mediante una interacción con el navegador.

En el tiempo de aplicación

Los dispositivos de entrada y salida de audio se pueden elegir en cualquier momento en tiempo de funcionamiento mediante la llamada de los métodos setAudioInput() y setAudioOutput(), respectivamente.

Tanto setAudioInput() como setAudioOutput() reciben dos parámetros: el id del dispositivo de audio que se utilizará, y una función de callback, llamada cuando la operación ha finalizada.

El siguiente ejemplo representa la selección de un dispositivo de audio ficticio de id 12345:

var recognition = new IaraSpeechRecognition();

// Inicializa el SDK
recognition.init({
userId: 'mi@email.com',
apiToken: '197765800edb8affcb44a7ae7b4ff0a3',

}).done(function(e) {
recognition.setAudioInput(12345, function() {
console.log('Dispositivo de audio seleccionado');
});
});

Listar dispositivos de audio disponibles

Después de iniciar, los dispositivos de entrada y salida de audio existentes en el computador del usuario deben ser consultados a partir de las propiedades audioInputs y audioOutputs del reconocedor.

El ejemplo siguiente lista todos los dispositivos de entrada y salida de audio disponibles:

var recognition = new IaraSpeechRecognition();

// Inicializa el SDK
recognition.init({
userId: 'mi@email.com',
apiToken: '197765800edb8affcb44a7ae7b4ff0a3',

}).done(function(e) {
var i, device;
for(i = 0; i < recognition.audioInputs.length; i++) {
device = recognition.audioOutputs[i];
console.log('Dispositivo de saída: ', device.id, device.name, device.selected);
}
});

La propriedad id del dispositivos de audio es la id prevista por setAudioInput() y setAudioOutput() para la selección de dispositivos.

La propriedad selected del dispositivos de audio listados por audioInputs y audioOutputs indican si el dispositivo correspondiente está en uso o no. Esta propiedad es sólo-lectura (read-only). Los ajustes realizados en ellas no tendrán ningún efecto y serán sobrescritos por el reconocedor periódicamente.

Si usted desea seleccionar un dispositivo de entrada/salida de audio, utilice setAudioInput() y setAudioOutput().

IMPORTANTE: Las propiedades audioInputs y audioOutputs y sus entradas son readonly. Seleccione el dispositivo de entrada/salida de audio a través de setAudioInput() y setAudioOutput().

Revisión de los dispositivos de audio

Saber si los dispositivos de audio están bien configurados y funcionan es esencial para las aplicaciones de reconocimiento de voz. Por esta razón, el reconocedor Iara dispone el método testAudioInputOutput().

Este método graba el audio del dispositivo de entrada (durante N segundos) y después reproduce ese audio mediante el dispositivo de salida. El test es similar a las llamadas de prueba realizadas por aplicaciones de videollamada como Skype.

El ejemplo siguiente muestra un test de audio de 3 segundos:

function gravacaoFinalizada() {
console.log('grabación finalizada. Iniciando la reproducción.');
}

function reproducacaoFinalizada() {
console.log('Reproducción finalizada. ¿Has oído algo?');
}

var recognition = new IaraSpeechRecognition();

recognition.init({
userId: 'mi@email.com',
apiToken: '197765800edb8affcb44a7ae7b4ff0a3',
}).done(function(e) {
// Inicia el test de entrada/salida de audio durante 3 segundos.
// Durante el tiempo previsto, el SDK grabará el audio del dispositivo de entrada.
// Posteriormente, se llamará a la función de `grabaciónFinalizada()` y el audio grabado será
// grabado. Una vez finalizada la reproducción de audio, a la función
//`reproducacaoFinalizada()` se llamará. Si todo sale correctamente, el usuario deberá oír
// lo que se ha grabado.
recognition.testAudioInputOutput(3, grabaciónFinalizada, reproducciónFinalizada);
});

El ejemplo userId-apiToken-test contiene códigos listos para la autentificación.