【发布时间】:2020-08-19 08:30:38
【问题描述】:
TensorflowJS readme 中的离线识别部分提到我们需要“通过某种方式获取音频 sn-p 的频谱图,例如,通过从 .wav 文件加载数据或以编程方式合成频谱图”。
谁能解释一下如何从 javascript 中的 wav 文件中获取频谱图?我找不到路。
为了进一步解释,我将展示我做了什么以及问题是什么:
let buffer = fs.readFilSync('zero1.wav');
let input = wav.decode(buffer);
# To make size of input equal to 9976 as per the restrictions of TensorflowJS i.e.
# (1,43,232): 1*43*232 = 9976 in size
input = input['channelData'][0].slice(1000, 10976)
const x = tf.tensor(inp, [1].concat(recognizer.modelInputShape().slice(1)));
const output = await recognizer.recognize(x);
当使用上述时(注意 zero1.wav 是从训练数据中获得的文件,因此应该给出高精度输出),我得到以下模棱两可的输出 -
这仅表示 recognizer.recognize() 的输入不正确。
那么,我应该如何将我的 wav 文件转换为频谱图并将其输入到识别器.recognize() 中?
如果需要任何说明,请告诉我。任何帮助表示赞赏
【问题讨论】:
-
谢谢。但是我已经看过了,但事实并非如此。但这是完全相同的问题。我将进一步解释我的问题@edkeveked
-
@edkeveked 我已经编辑了这个问题。请看一看,任何帮助表示赞赏!
-
什么是
wav.decode(buffer)返回,为什么必须切片并连接到input['channelData']?如果zero1.wav是从训练数据中获得的,则不需要对其进行切片,除非在对数据进行训练之前应用相同的处理。 -
wav.decode(buffer) 的输出是一个 object,如下所示: 此外,我需要对 input['channelData '] 因为,否则,我会收到以下错误:
标签: speech-recognition tensorflow.js