我在TensorFlow中看过像tf.image.decode_png
这样的图像解码器,但是如何读取音频文件(WAV,Ogg,MP3等)?没有TFRecord
可以吗?
E.g。类似于this:
filename_queue = tf.train.string_input_producer(['my-audio.ogg'])
reader = tf.WholeFileReader()
key, value = reader.read(filename_queue)
my_audio = tf.audio.decode_ogg(value)
答案 0 :(得分:5)
是的,包tensorflow.contrib.ffmpeg中有特殊的解码器。要使用它,您需要先安装ffmpeg。
示例:
audio_binary = tf.read_file('song.mp3')
waveform = tf.contrib.ffmpeg.decode_audio(audio_binary, file_format='mp3', samples_per_second=44100, channel_count=2)
答案 1 :(得分:1)
很遗憾,TensorFlow 2.x不支持@sygi的答案。一种替代解决方案是使用某些外部库(例如pydub或librosa)来实现mp3解码步骤,并通过使用tf.py_function
将其集成到管道中。因此,您可以按照以下方式进行操作:
from pydub import AudioSegment
import tensorflow as tf
dataset = tf.data.Dataset.list_files('path/to/mp3s/*')
def decode_mp3(mp3_path):
mp3_path = mp3_path.numpy().decode("utf-8")
mp3_audio = AudioSegment.from_file(mp3_path, format="mp3")
return mp3_audio.get_array_of_samples()
dataset = dataset.map(lambda path:
tf.py_function(func=decode_mp3, inp=[path], Tout=tf.float32))
for features in dataset.take(3):
data = features.numpy()
plt.plot(data)
plt.show()
答案 2 :(得分:1)
最近已将此功能添加到tensorflow_io
(here)中。
您可以像这样使用它:
$get_time1ax = "select * from support_tickets WHERE start_date >= '2020-03-19' AND end_date <= '2020-04-19' ORDER BY problem_title ASC";