首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用tensorflow加速频谱图计算?

如何使用tensorflow加速频谱图计算?
EN

Stack Overflow用户
提问于 2019-03-29 22:24:19
回答 1查看 475关注 0票数 2

我想为视频文件中的每一帧计算1秒音频剪辑的频谱图。

我使用tensorflow.contrib.framework.python.ops.audio_ops.audio_spectrogram函数来计算频谱图。

音频从视频中提取并以48 kHz采样。我使用的是window_size=480 (0.01 * sample_rate)和stride=240 (0.5重叠)。我所有的视频文件都是25fps,时长为1~10分钟。因此,它需要计算每秒25个光谱图。

我目前正在通过获取时间x到x+1秒的波形并将波形传递给audio_spectrogram()函数来计算频谱图。这是我如何计算音频文件的语谱图的代码片段:

代码语言:javascript
复制
audio_binary = tf.read_file(filename)
wav = audio_ops.decode_wav(audio_binary)

with tf.Session() as sess:
    waveform, sample_rate = tf.run(wav)

for i in range(25 * video_duration):
    start = i * sample_rate / 25 # fps
    spect = audio_ops.audio_spectrogram(waveform[start:start+sample_rate], 480, 240)

    # spectrogram post processing...

    with tf.Session() as sess, open(get_output_filename(filename, i)) as output:
        encode = tf.image.encode_jpeg(spect)
        output.write(tf.run(encode))

不幸的是,这段代码需要很长的时间来计算所有的光谱图。完整计算5个音频文件的频谱图需要12小时。我有数百个视频要计算:(.

有什么方法可以加速这个过程吗?

我正在考虑批量执行audio_spectrogram()函数(类似于在[batch_size, waveform]上操作),但不知道怎么做,因为波形参数只接受一个1维的数组。另外,我也不确定批量操作是否会加速这个过程。

EN

回答 1

Stack Overflow用户

发布于 2020-01-16 15:45:06

查看this项目。它是Tensorflow Keras层中的语音处理功能的实现。该软件包有助于通过利用图形处理器加速音频处理,同时允许轻松转换为TFLite。

代码语言:javascript
复制
import tensorflow as tf
from spela.spectrogram import Spectrogram

# Define a Sequential model
model = tf.keras.Sequential()

# Add a layer to compute Spectrogram, returns a 2D image
model.add(Spectrogram(n_dft=512, n_hop=256, input_shape=(height, width),
                      return_decibel_spectrogram=True, power_spectrogram=2.0,
                      trainable_kernel=False, name='static_stft'))

model.compile(optimizer=tf.keras.optimizers.Adam(lr=0.001),
              loss="categorical_crossentropy"
              , metrics=[tf.keras.metrics.categorical_accuracy])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55419515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档