Función Tensorflow.js tf.data.microphone()

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:

  1. sampleRateHz: Su rango se encuentra entre 44100 y 48000.
  2. fftSize: Es un valor numérico que debe ser una potencia de 2 entre 2 a 4 y 2 a 14.
  3. columnTruncateLength: Es un valor numérico.
  4. numFramesPerSpectrogram: Es un valor numérico.
  5. audioTrackConstraints: es MediaTrackConstraints.
  6. smoothingTimeConstant: Es un valor numérico.
  7. includeSpectrogram: Es un valor booleano.
  8. 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *