首先,我想说我对 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 个元素),这些列表之间都 float (在我的例子中) )-0.50218207 和 0.39030123。我的问题是:这些数字意味着什么?这是我完全缺失的某种标准音频表示吗?
最佳答案
波形中的每个浮点值代表离散时刻相应音频的幅度,具体取决于采样率(在本例中为每 1/16,000 秒) 。如果您查看的是 2 个音频 channel 而不是 1 个 channel ,您将拥有另一个类似的 ndarray,从而为您提供一个等距时间序列数据的二维矩阵。
您可以通过查找周期性周期或幅度变化来确定该波形分量的频率/音调。从正到负再返回的交叉可能代表基频,而较小的周期内振荡可能代表声音的谐波和泛音。通常这种分析是使用快速傅里叶变换或类似的方法来执行的。 TensorFlow 实现肯定会让人读起来很有趣。
关于python - tensorflow ffmpeg contrib 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38018423/