我遵循音频的tensorflow音频识别教程。这个笔记本工作得很好。
作为下一步,我想录制我自己的声音,然后通过在tensorflow培训的模型进行测试。我首先生成了一段录音:
seconds=1
sr=16000
nchannels=1
myrecording = sd.rec(int(seconds * sr), samplerate=sr, channels=nchannels)
sd.wait()
wavfile.write(filename, sr, myrecording)到目前为止,我可以播放我的录音。但是,当我尝试使用类似于以下内容的tf.audio.decode_wav加载文件时:
audio_binary = tf.io.read_file(filename)
audio, _ = tf.audio.decode_wav(audio_binary)我得到以下错误:
InvalidArgumentError: WAV的坏音频格式:预期1 (PCM),但got3操作:DecodeWav
任何关于可能出错的指示都会受到极大的赞赏。
发布于 2021-01-25 14:33:23
(我会把这写成评论,但我还没有足够的声誉)
WAV文件的默认编码称为"16位PCM",这意味着录制的声音在写入WAV文件之前使用16位int数据表示。
tf.audio.decode_wav()在文档中声明:“将16位PCM文件解码为浮动张量”。因此,使用任何其他编码(在您的示例中为24位编码)传递WAV文件将导致与您所收到的错误相同的错误。
发布于 2020-11-13 21:33:35
终于解决了。它与位表示有关。我在24-bit中创建了一个文件,而出于某种原因,tf.audio.decode_wav只接收16位文件。
我不清楚为什么,但我认为这是目前解决的。
发布于 2022-02-02 10:44:58
您正在使用的scipy.wavfile.write函数不会自动以16位格式保存wav文件。因此,从参考文献中的示例来看,您应该这样做:
import numpy as np
from scipy.wavfile import write
# your other code here
write(filename, sr, myrecording.astype(np.int16))https://stackoverflow.com/questions/64813162
复制相似问题