我想以 16000Hz 录制音频并获取它的频谱图。我的模型接受 [null.1998.101] 的输入。我无法用 javascript 实现它
const mic = await tf.data.microphone({
fftSize: 256,
columnTruncateLength: 101,
numFramesPerSpectrogram: 1998 ,
sampleRateHz:16000,
includeSpectrogram: true,
includeWaveform: true
});
const audioData = await mic.capture();
console.log(audioData)
const spectrogramTensor = audioData.spectrogram;
console.log(spectrogramTensor)
spectrogramTensor.print();
const waveformTensor = audioData.waveform;
waveformTensor.print();
mic.stop();
我的模型是触发词检测。 在 Python 中,我使用了以下代码。
def graph_spectrogram(wav_file):
rate, data = get_wav_info(wav_file)
print(data)
print(len(data))
nfft = 200 # Length of each window segment
fs = 8000 # Sampling frequencies
noverlap = 120 # Overlap between windows
nchannels = data.ndim
if nchannels == 1:
pxx, freqs, bins, im = plt.specgram(data, nfft, fs, noverlap = noverlap)
elif nchannels == 2:
pxx, freqs, bins, im = plt.specgram(data[:,0], nfft, fs, noverlap = noverlap)
return pxx
最佳答案
浏览器有一个默认且固定的录音采样率值。以下将输出浏览器的频率
速率。
new window.AudioContext().sampleRate
抛出错误是因为16000
与浏览器采样率不匹配。目前无法从浏览器更改录音的采样率。
可以做的是
关于javascript - 错误: Mismatch in sampling rate: Expected: 16000; Actual: 48000. Tensorflow js抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61475803/