音频信号的三次样条插值学习笔记

March 12, 2020, 9:32 p.m.

read: 1404

对音频信号进行三次样条插值(Cubic Spline Interpolation)
以8k插值为16k信号为例,下方为matlab代码

[y, fs] = audioread('8k.wav');              % 读取原始的音频文件
y = y';                                     % 对音频数据进行转置
y_size = size(y);                           % 读取音频文件的长度信息,第一维度是ch,此处为1
x = 0:1:y_size(2)-1;                        % 构造出原始x坐标为 [0,1,2,...音频长度-1]
xi = 0:0.5:y_size(2)-0.5;                   % 构造出新坐标系,8k到16k,在相同的时间内,采样2倍的信号,因此重采样的x坐标为[0, 0.5, 1, 1.5, 2, 2.5, ...音频长度-0.5]
yi = spline(x,y,xi);                        % 进行三次样条插值
audiowrite('cpl_16k.wav', yi, 16000);       % 将得到的值按16k回写至文件系统



三次样条插值结果:



附python实现
import soundfile as sf
from scipy.interpolate import interp1d
import numpy as np
y, sr = sf.read('8k.wav')
x = np.arange(0, y.shape[0], 1)
xi = np.linspace(x.min(), x.max() + 0.5, x.shape[0] * 2)
yi = interp1d(x, y, kind='cubic', bounds_error=False)(xi)
sf.write('cpl_16k.wav', yi, 16000)


参考

如何使用matlab软件对离散数据进行三次样条插值-百度经验
Cubic spline data interpolation - MATLAB spline
SciPy样条插值 - Python学习园
scipy.interpolate.interp1d()函数详解Python漫步量化-CSDN博客




Mel滤波器横向对比学习笔记

0x00本节主要讲相关的理论基础 最近学习LPC特征提取时候看到 BFCC 和 语音识别常用的 MFCC 类似,都是利用人类听觉特性,尽管 Bark scale 是根据人耳对响度感知实验确定的刻度…

python 读取wav的采样率

文章标题:python 读取wav的采样率文章内容:使用标准库读取# librosa import librosa y, sr = librosa(filename, sr=None)。 # py…

此站点由 ASP.NETIIS 驱动 | © 2018-2023 hupeng.me. All Rights Reserved.