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: Siinput
no se informa en la inicialización, se utilizainput: '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()
.
Nombre | Valor de input | Descripción |
---|---|---|
Selección automática | auto | El SDK selecciona el mejor dispositivo de entrada de audio con una interacción mínima del usuario. |
SpeechMike | speechmike | Micrófono externo USB SpeechMike®. |
Micrófono de sistema | osmic | El 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 navegador | browsermic | El 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 propiedadesaudioInputs
yaudioOutputs
y sus entradas son readonly. Seleccione el dispositivo de entrada/salida de audio a través desetAudioInput()
ysetAudioOutput()
.
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.