Tensorflow.js es una biblioteca de código abierto desarrollada por Google para ejecutar modelos de aprendizaje automático y redes neuronales de aprendizaje profundo en el entorno del navegador o del Node.
La función tf.data.microphone() se usa para producir un iterador que crea tensores de espectrograma en el dominio de la frecuencia a partir del flujo de audio del micrófono con la FFT nativa del navegador.
Nota:
- Este código es efectivo solo cuando el dispositivo tiene un micrófono. Mientras ejecuta esta API, le pedirá permiso para abrir el micrófono.
- Esta API solo funciona a través del entorno del navegador.
Sintaxis:
tf.data.microphone (microphoneConfig)
Parámetros: Esta función acepta un parámetro que se ilustra a continuación:
- microphoneConfig: un objeto MicrophoneConfig contiene configuraciones para leer datos de audio del micrófono. Es un parámetro opcional.
Este objeto contiene alguna configuración que se especifica a continuación:
- sampleRateHz: Su rango se encuentra entre 44100 y 48000.
- fftSize: Es un valor numérico que debe ser una potencia de 2 entre 2 a 4 y 2 a 14.
- columnTruncateLength: Es un valor numérico.
- numFramesPerSpectrogram: Es un valor numérico.
- audioTrackConstraints: es MediaTrackConstraints.
- smoothingTimeConstant: Es un valor numérico.
- includeSpectrogram: Es un valor booleano.
- includeWaveform: Es un valor booleano.
Valor devuelto: Devuelve un MicrophoneIterator.
Ejemplo 1: después de ejecutar el siguiente código, solicitará permiso para iniciar el micrófono. Después de dar permiso, el código a continuación regresará y dará salida.
Javascript
// Importing the tensorflow.js library import * as tf from "@tensorflow/tfjs" // Calling the .data.microphone() function // with its parameters const mic = await tf.data.microphone({ fftSize: 1024, columnTruncateLength: 32, numFramesPerSpectrogram: 10, sampleRateHz:43000, includeSpectrogram: true, includeWaveform: false }); // Capturing the data recorded by microphone const audioData = await mic.capture(); const spectrogramTensor = audioData.spectrogram; // Printing the data like sampling rate // expected and actual spectrogramTensor.print(); const waveformTensor = audioData.waveform; waveformTensor.print(); // Stopping the microphone mic.stop();
Salida: da un error porque aquí la tasa de muestreo esperada es 43000 pero el valor real registrado es 48000.
An error occurred Mismatch in sampling rate: Expected: 43000; Actual: 48000
Ejemplo 2: después de ejecutar el siguiente código, solicitará permiso para iniciar el micrófono. Después de dar permiso, el código a continuación regresará y dará salida.
Javascript
// Importing the tensorflow.js library import * as tf from "@tensorflow/tfjs" // Initializing the configurations of // reading audio data from microphone const x = { fftSize: 1024, columnTruncateLength: 32, numFramesPerSpectrogram: 10, sampleRateHz:48000, includeSpectrogram: true, includeWaveform: false }; // Calling the .data.microphone() function // with the parameter specified above const mic = await tf.data.microphone(x); // Capturing the data recorded by microphone const audioData = await mic.capture(); const spectrogramTensor = audioData.spectrogram; // Creating an iterator that generate frequency-domain // spectrogram Tensors from the microphone spectrogramTensor.print(); const waveformTensor = audioData.waveform; // Stopping the microphone mic.stop();
Producción:
Tensor [[[0 ], [0 ], [0 ], ..., [0 ], [0 ], [0 ]], [[0 ], [0 ], [0 ], ..., [0 ], [0 ], [0 ]], [[0 ], [0 ], [0 ], ..., [0 ], [0 ], [0 ]], [[0 ], [0 ], [0 ], ..., [0 ], [0 ], [0 ]], [[0 ], [0 ], [0 ], ..., [0 ], [0 ], [0 ]], [[0 ], [0 ], [0 ], ..., [0 ], [0 ], [0 ]], [[0 ], [0 ], [0 ], ..., [0 ], [0 ], [0 ]], [[0 ], [0 ], [0 ], ..., [0 ], [0 ], [0 ]], [[0 ], [0 ], [0 ], ..., [0 ], [0 ], [0 ]], [[-Infinity], [-Infinity], [-Infinity], ..., [-Infinity], [-Infinity], [-Infinity]]]
Referencia: https://js.tensorflow.org/api/latest/#data.microphone
Publicación traducida automáticamente
Artículo escrito por Kanchan_Ray y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA