Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用于tensorflow的音频重采样层

用于tensorflow的音频重采样层
EN

Stack Overflow用户
提问于 2022-03-29 04:13:48
回答 1查看 318关注 0票数 0

它需要在自定义模型结构中重采样音频信号。这种重采样任务不是一种可以从模型中发展出来的预处理/后处理操作。换句话说,这种重采样是模型内部设计的一部分。然后,还需要为这样一个层定义梯度操作。对于重采样操作,它将使用tensorflow I/O:

tfio.audio.resample

操作工作非常完美,可以很容易地用作前/后处理单元;然而,它的实现--一个自定义层嵌入到模型中--是很有挑战性的,因为我不知道如何实现反向路径。

  • 对于这样一个一维信号重采样层,应该如何实现反向路径?
  • 是否还有其他开放源码的一维信号重采样层?

P.S.,我尝试使用传统的像层一样的上采样/池,但对实现其他重采样方法(如基于FFT的)的tfio进行比较却不够精确。

为了提供更多的理解,请看一下:另一个问题

EN

回答 1

Stack Overflow用户

发布于 2022-03-29 08:07:02

你必须告诉重新采样的目标,它可以在很多方面完成,包括总结唱歌信号,然后你可以用较小的正弦值来表示。

通过改变采样率,您可以节省数据空间0.05 *tf.math.sin(音频:5* 22050).numpy()

tf.math.sin(audio0:2750).numpy() sec_1 = np.zeros((2750)) *

tf.math.sin(audio2750:5500).numpy() sec_2 = np.ones((2750)) *

样本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
import tensorflow as tf

import matplotlib.pyplot as plt

contents = tf.io.read_file("F:\\temp\\Python\\Speech\\temple_of_love-sisters_of_mercy.wav")
audio, sample_rate = tf.audio.decode_wav(
    contents, desired_channels=-1, desired_samples=-1, name=None
)

print(audio)
print(sample_rate)

plt.plot(audio[:5 * 22050])
plt.show()
plt.close()

plt.plot(0.05 * tf.math.sin(audio[:5 * 22050]).numpy())
plt.show()
plt.close()

sec_1 = np.zeros((2750)) * tf.math.sin(audio[0:2750]).numpy()
sec_2 = np.ones((2750)) * tf.math.sin(audio[2750:5500]).numpy()


plt.plot(0.05 * tf.concat([sec_1, sec_2], 0).numpy())
plt.show()
plt.close()

输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
array([[0.],
       [0.],
       [0.],
       ...,
       [0.],
       [0.],
       [0.]], dtype=float32)>, sample_rate=<tf.Tensor: shape=(), dtype=int32, numpy=22050>)

tf.Tensor(22050, shape=(), dtype=int32)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71661813

复制
相关文章
【Android FFMPEG 开发】FFMPEG 音频重采样 ( 初始化音频重采样上下文 SwrContext | 计算音频延迟 | 计算输出样本个数 | 音频重采样 swr_convert )
① FFMPEG 初始化 : 参考博客 【Android FFMPEG 开发】FFMPEG 初始化 ( 网络初始化 | 打开音视频 | 查找音视频流 )
韩曙亮
2023/03/27
2.5K0
使用libswresample库实现音频重采样
  在音频重采样时,用到的核心结构是SwrContext,我们可以通过swr_alloc()获取swr_ctx实例,然后通过av_opt_set_int()函数和av_opt_set_sample_fmt()函数来设置音频重采样的参数,最后通过swr_init()函数初始化SwrContext实例即可。下面给出代码:
故乡的樱花开了
2023/10/22
4020
7.SwrContext音频重采样使用
头文件位于#include <libswresample/swresample.h>
诺谦
2020/09/14
8300
ffplay源码分析6-音频重采样
FFmpeg解码得到的音频帧的格式未必能被SDL支持,在这种情况下,需要进行音频重采样,即将音频帧格式转换为SDL支持的音频格式,否则是无法正常播放的。 音频重采样涉及两个步骤: 1) 打开音频设备时进行的准备工作:确定SDL支持的音频格式,作为后期音频重采样的目标格式 2) 音频播放线程中,取出音频帧后,若有需要(音频帧格式与SDL支持音频格式不匹配)则进行重采样,否则直接输出
叶余
2019/04/02
1.6K0
基于傅里叶变换的音频重采样算法 (附完整c代码)
如果特定情况下需要,我也可以上matlab,python,delphi,c#,c++等等。
cpuimage
2018/07/05
2.4K0
音视频八股文(11)-- ffmpeg 音频重采样
所谓的重采样,就是改变⾳频的采样率、sample format、声道数等参数,使之按照我们期望的参数输出。
福大大架构师每日一题
2023/05/11
9770
重采样技术—Bootstrap
核心思想是通过保留一部份训练集数据作为检验集来估计真实检验集的错误率与模型拟合效果。常用的有留一法、K折交叉验证。
狼啸风云
2019/11/27
2.4K0
FFmpeg4.0笔记:封装ffmpeg的音频重采样功能类CSwr
https://github.com/gongluck/FFmpeg4.0-study/tree/master/Cff
gongluck
2019/06/15
9100
简洁明了的插值音频重采样算法例子 (附完整C代码)
近一段时间在图像算法以及音频算法之间来回游走。 经常有一些需求,需要将音频进行采样转码处理。 现有的知名开源库,诸如: webrtc , sox等, 代码阅读起来实在闹心。 而音频重采样其实也就是插值算法。 与图像方面的插值算法没有太大的区别。 基于双线性插值的思路。 博主简单实现一个简洁的重采样算法, 用在对采样音质要求不高的情况下,也是够用了。 编解码库采用dr_wav https://github.com/mackron/dr_libs/blob/master/dr_wav.h  近期有点强迫症,纯c
cpuimage
2018/04/12
5K0
FFmpeg菜鸡互啄#第6篇#音频帧格式转换(重采样)
关键步骤 struct SwrContext* swr_covert_ctx = swr_alloc_set_opts(NULL, av_get_default_channel_layout(pACodecCtx->channels), AV_SAMPLE_FMT_S16, pACodecCtx->sample_rate, av_get_default_channel_layout(pACodecCtx->channels), pACodecCtx->sample_fmt, pACodecCtx->
_gongluck
2018/03/08
3.6K0
FFmpeg之重采样demo解析!
通俗的讲,重采样就是改变音频的采样率、sample format(采样格式)、声道数(channel)等参数,使之按照我们期望的参数输出。
用户6280468
2022/03/21
1.5K0
FFmpeg之重采样demo解析!
修改 wav 音频采样率
为为为什么
2023/06/27
1.5K0
时间序列 | 重采样及频率转换
resample有一个类似于groupby的API,调用resample可以分组数据,然后会调用一个聚合函数:
数据STUDIO
2021/06/24
1.6K0
tensorflow: bn层
可视化 batch normalization 过程中的 tensor演化(以输入一张[1, 4 , 4, 1]的图片为例)
JNingWei
2018/09/28
1.1K0
如何使用libavfilter库给pcm音频采样数据添加音频滤镜?
  初始化音频滤镜的方法基本上和初始化视频滤镜的方法相同,不懂的可以看上篇博客,这里直接给出代码:
故乡的樱花开了
2023/10/22
3260
安装适用于 Java 的 TensorFlow安装适用于 Java 的 TensorFlow
TensorFlow 可提供在 Java 程序中使用的 API。这些 API 特别适合用于加载以 Python 语言创建的模型并在 Java 应用中运行这些模型。本指南将介绍如何安装适用于 Java 的 TensorFlow 并在 Java 应用中使用 TensorFlow。
一个会写诗的程序员
2018/08/17
1.2K0
pandas高级操作:list 转df、重采样
文章目录 list转数据框(Dataframe) pandas读取无头csv 重新采样 pandas 读取 excel list转数据框(Dataframe) # -*- coding:utf-8 -*- # /usr/bin/python # 字典转数据框(Dataframe) from pandas.core.frame import DataFrame a=[1,2,3,4]#列表a b=[5,6,7,8]#列表b c={"a" : a, "b" : b}#将列表a,b转换成字典 data=Da
AI拉呱
2021/01/14
2.3K0
点击加载更多

相似问题

音频重采样库

21

如何使用Tensorflow API对音频文件进行重采样

10

用NAudio重采样音频

10

防止网络音频重采样

34

用Tensorflow重采样(向上采样或向下采样)图像

18
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文