首先,我想说一般来说,我对TensorFlow和机器学习都是全新的。
我正在查看ffmpeg contrib部分,我看到解码音频文件的例子,我想知道解码音频文件的矢量输出是什么?我运行的代码如下:
import tensorflow as tf
from tensorflow.contrib import ffmpeg
with tf.Session() as sess:
audio_binary = tf.read_file('test.wav')
waveform = ffmpeg.decode_audio(audio_binary, file_format='wav',
samples_per_second=16000, channel_count=1)
audio = waveform.eval()
audio
变量然后变成numpy.ndarray
类型,它是单个元素列表的列表(总共约620,000个元素),它们都是(在我的情况下)-0.50218207和0.39030123之间的所有浮点数。我的问题是:这些数字是什么意思?这是某种标准的音频表现形式,我完全不知道了吗?
答案 0 :(得分:1)
波形中的每个浮点值表示离散时刻相应音频的幅度,具体取决于采样率(在这种情况下,每1/16000秒) 。如果您正在查看2个音频通道而不是1个通道,那么您将拥有另一个类似的ndarray,从而为您提供等距时间序列数据的2d矩阵。
您可以通过查找周期性周期或幅度变化来确定该波形的分量的频率/间距。从正到负和后向的交叉可能代表基频,而较小的周期内振荡可能代表声音的谐波和泛音。通常,这种分析使用快速傅立叶变换或类似方法来执行。 TensorFlow实现肯定会让人着迷。