📜  Tensorflow.js tf.data.microphone()函数

📅  最后修改于: 2022-05-13 01:56:41.987000             🧑  作者: Mango

Tensorflow.js tf.data.microphone()函数

Tensorflow.js是谷歌开发的一个开源库,用于在浏览器或节点环境中运行机器学习模型和深度学习神经网络。

tf.data.microphone()函数用于生成一个迭代器,该迭代器使用浏览器的本机 FFT 从麦克风音频流创建频域频谱图张量。

笔记:

  • 此代码仅在设备具有麦克风时有效。运行此 API 时,它会要求允许打开麦克风。
  • 此 API 仅适用于浏览器环境。

句法:

tf.data.microphone (microphoneConfig)


参数:此函数接受一个参数,如下所示:

  • 麦克风配置:一个麦克风配置对象包含从麦克风读取音频数据的配置。它是一个可选参数。

该对象包含以下指定的一些配置:

  1. sampleRateHz:它的范围在 44100 到 48000 之间。
  2. fftSize:它是一个数值,必须是 2 到 4 和 2 到 14 之间的 2 的幂。
  3. columnTruncateLength:它是一个数字值。
  4. numFramesPerSpectrogram:它是一个数值。
  5. audioTrackConstraints:它是 MediaTrackConstraints。
  6. SmoothingTimeConstant:它是一个数值。
  7. includeSpectrogram:它是一个布尔值。
  8. includeWaveform:它是一个布尔值。

返回值:它返回一个 MicrophoneIterator。

示例 1:运行以下代码后,它会请求启动麦克风的权限。给予许可后,下面的代码将返回并给出输出。

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();


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();


输出:它给出了一个错误,因为这里预期的采样率为 43000,但实际记录的值为 48000。

An error occured
Mismatch in sampling rate: Expected: 43000; Actual: 48000

示例 2:运行以下代码后,它将请求启动麦克风的权限。给予许可后,下面的代码将返回并给出输出。

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();

输出:

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]]]

参考: https://js.tensorflow.org/api/latest/#data.microphone