主要内容

stretchAudio

时拉音频

描述

例子

音频输出=拉伸(audioInα通过TSM因子对输入音频应用时间尺度修改(TSM)α

例子

音频输出=拉伸(audioInα名称,价值指定使用一个或多个选项的选项名称,价值对参数。

例子

全部收缩

读入音频信号。听听音频信号并随时间绘制它。

[audioIn,fs]=音频读取(“计数-16-44p1-mono-15secs.wav”);t=(0:size(audioIn,1)-1)/fs;plot(t,audioIn)xlabel(‘时间’)伊拉贝尔(“振幅”)标题(原始信号的)轴心网格在…上

图中包含一个轴对象。标题为“原始信号”的轴对象包含一个line类型的对象。

声音(AudioIn,FS)

使用stretchAudio要应用1.5的加速系数,请收听修改后的音频信号并随时间绘制。采样率保持不变,但信号的持续时间缩短。

audioOut=stretchAudio(audioIn,1.5);t=(0:size(audioOut,1)-1)/fs;plot(t,audioOut)xlabel(‘时间’)伊拉贝尔(“振幅”)标题('修改信号,加速系数=1.5')轴心网格在…上

图中包含一个轴对象。带有标题修改信号、加速系数=1.5的轴对象包含一个line类型的对象。

声音(音频输出,fs)

减慢原始音频信号0.75因素。收听修改后的音频信号并随时间绘制它。采样率保持与原始音频相同,但信号的持续时间增加了。

Auditout = LigressAudio(AudioIn,0.75);t =(0:大小(频声,1)-1)/ fs;plot(t,abusout)xlabel(‘时间’)伊拉贝尔(“振幅”)标题('修改信号,加速系数=0.75')轴心网格在…上

图包含轴对象。具有标题修改信号的轴对象,加速因子= 0.75包含类型线的对象。

声音(音频输出,fs)

stretchAudio万博1manbetx当使用默认的声码器方法时,在频域音频上支持TSM。将TSM应用于频域音频使您能够针对多个TSM因素重用STFT计算。

读入音频信号。听听音频信号并随时间绘制它。

[audioIn,fs]=音频读取('FemaleSpeech-16-8-Mono-3secs.wav');声音(audioIn,fs)t=(0:size(audioIn,1)-1)/fs;绘图(t,audioIn)xlabel(‘时间’)伊拉贝尔(“振幅”)标题(原始信号的)轴心网格在…上

图中包含一个轴对象。标题为“原始信号”的轴对象包含一个line类型的对象。

将音频信号转换为频域。

win=sqrt(汉恩(256,'定期'));OVRLP = 192;s = stft(isainin,“窗口”,赢了,“重叠长度”,OVRLP,'中心',假);

将音频信号加速为1.4倍。指定用于创建频域表示的窗口和重叠长度。

alpha = 1.4;Auditout = LigressAudio(S,Alpha,“窗口”,赢了,“重叠长度”,ovrlp);声音(audioOut,fs)t=(0:size(audioOut,1)-1)/fs;绘图(t,audioOut)xlabel(‘时间’)伊拉贝尔(“振幅”)标题('修改信号,TSM因子= 1.4')轴心网格在…上

图中包含一个轴对象。标题修改信号为TSM Factor=1.4的轴对象包含类型为line的对象。

减慢音频信号倍数为0.8。指定用于创建频域表示的窗口和重叠长度。

α= 0.8;Auditout = LigressAudio(S,Alpha,“窗口”,赢了,“重叠长度”,ovrlp);声音(audioOut,fs)t=(0:size(audioOut,1)-1)/fs;绘图(t,audioOut)xlabel(‘时间’)伊拉贝尔(“振幅”)标题('修改信号,TSM因子= 0.8')轴心网格在…上

图中包含一个轴对象。标题修改信号为TSM Factor=0.8的轴对象包含类型为line的对象。

默认的TSM方法(声码器)允许您额外应用锁相以增加对原始音频的保真度。

读入音频信号。听听音频信号并随时间绘制它。

[audioIn,fs]=音频读取(“SpeechDFT-16-8-mono-5secs.wav”);声音(audioIn,fs)t=(0:size(audioIn,1)-1)/fs;绘图(t,audioIn)xlabel(‘时间’)伊拉贝尔(“振幅”)标题(原始信号的)轴心网格在…上

锁相向TSM添加了非竞争计算负载,并不总是需要。默认情况下,禁用锁相。将1.8的加速因子应用于输入音频信号。听听音频信号并随时间绘制它。

alpha = 1.8;TIC AUDIOOUT = LAJRIGAUDIO(AudioIn,Alpha);processingTimewithoutphaseLocking = TOC.
加工节省inewithoutphaseLocking = 0.0798.
声音(audioOut,fs)t=(0:size(audioOut,1)-1)/fs;绘图(t,audioOut)xlabel(‘时间’)伊拉贝尔(“振幅”)标题('修改信号,α=1.8,锁定相位=假')轴心网格在…上

对输入音频信号应用相同的1.8加速因子,这次启用锁相。听听音频信号并随时间绘制它。

tic audioOut=stretchAudio(音频输入,alpha,“锁定”,true);处理带有相位锁定的时间=toc
使用相位锁定处理时间=0.1154
声音(audioOut,fs)t=(0:size(audioOut,1)-1)/fs;绘图(t,audioOut)xlabel(‘时间’)伊拉贝尔(“振幅”)标题('Modified Signal, alpha = 1.8, LockPhase = true')轴心网格在…上

波形相似性叠加(WSOLA)TSM方法允许您指定搜索最佳信号对齐的最大样本数。默认情况下,WSOLA增量是分析窗口中的样本数减去相邻分析窗口之间重叠的样本数。增加WSOLA增量会增加计算负载,但也可能会增加保真度。

读入音频信号。听音频信号的前10秒。

[audioIn,fs]=音频读取(“rockguitar - 16 - 96立体声- 72 secs.flac”);声音(AudioIn(1:10 * FS,:),FS)

使用WSOLA方法将TSM系数0.75应用于输入音频信号。收听结果音频信号的前10秒。

α= 0.75;tic audioOut=stretchAudio(音频输入,alpha,“方法”“wsola”);ProcessingTimewithDefaultWsoladelta = TOC.
processingTimeWithDefaultWSOLADelta = 19.4403
声音(音频输出(1:10*fs,:),fs)

将TSM因子0.75应用于输入音频信号,这一次将WSOLA增量增加到1024。收听结果音频信号的前10秒。

tic audioOut=stretchAudio(音频输入,alpha,“方法”“wsola”“WSOLADelta”,1024);处理时间增加DWSolaDelta=toc
processingTimeWithIncreasedWSOLADelta=25.5306
声音(音频输出(1:10*fs,:),fs)

输入参数

全部收缩

输入信号,指定为列向量,矩阵或3-D阵列。该功能如何解释audioIn取决于复杂性audioIn的价值方法

  • 如果audioIn是真实的,audioIn被解释为时域信号。在这种情况下,audioIn必须是列向量或矩阵。列被解释为单独的通道。

    此语法适用于什么时候方法被设置为“声码器”“wsola”

  • 如果audioIn很复杂,audioIn被解释为频域信号。在这种情况下,audioIn一定是一个L.——- - - - - -m——- - - - - -N数组,在哪里L.是FFT长度,m是单个光谱的数量,以及N是渠道的数量。

    此语法仅适用于以下情况:方法被设置为“声码器”

数据类型:仅有一个的|
复数支持:万博1manbetx

TSM因子,指定为正标量。

数据类型:仅有一个的|

名称 - 值参数

指定可选的逗号分离对名称,价值参数。名称是参数名称和价值是对应的值。名称必须出现在引号内。您可以以任何顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:'窗口',kbdwin(512)

用于时间缩放音频的方法,指定为包括的逗号分隔对“方法”“声码器”“wsola”。集“方法”“声码器”使用相位声码器方法。集“方法”“wsola”使用WSOLA方法。

如果“方法”被设置为“声码器”audioIn可以是真实的,也可以是复杂的“方法”被设置为“wsola”audioIn一定是真的。

数据类型:仅有一个的|

应用于时域的窗口,指定为逗号分隔对,由“窗口”和一个真正的矢量。向量中的元素数必须在范围[1,大小(audioIn, 1)].向量中的元素数也必须大于OverlapLength

笔记

如果使用stretchAudio对于频域输入,必须指定与用于转换的相同窗口audioIn到频域。

数据类型:仅有一个的|

相邻窗口之间重叠的样本数,指定为由逗号分隔的对组成“重叠长度”和范围为[0]的整数,numel(窗口))。

笔记

如果使用stretchAudio对于频域输入,必须指定OverlapLength与用于变换的重叠长度相同audioIn转换为时频表示。

数据类型:仅有一个的|

应用标识锁相,指定为逗号分隔对,由“LockPhase”错误的符合事实的

依赖关系

要启用此名称-值对参数,请设置方法“声码器”

数据类型:逻辑

用于搜索最佳信号对齐的最大样本数,指定为逗号分隔对“WSOLADelta”一个非负标量。

依赖关系

要启用此名称-值对参数,请设置方法“wsola”

数据类型:仅有一个的|

输出参数

全部收缩

时间尺度修改音频,返回为独立通道的列向量或矩阵。

算法

全部收缩

阶段声码器

相位声码器算法是TSM的频域方法[1][2]。相位声码器算法的基本步骤为:

  1. 该算法以间隔η为时域信号窗口,其中η=元素个数() -OverlapLength。然后将窗口转换为频域。

  2. 为了保留水平(跨越时间)相位相干性,算法将每个垃圾箱视为通过累积其瞬时频率的估计来计算的阶段的独立正弦曲线。

  3. 为了保持垂直(跨单个频谱)的相位相干性,该算法将组bins的相位超前锁定为局部峰值的相位超前。此步骤仅适用于锁相被设置为符合事实的

  4. 该算法将修改的频谱图返回到时域,Windows以δ的间隔间隔开,其中Δ≈0m。α是由此指定的加速因子α输入参数。

WSOLA.

WSOLA算法是TSM的时域方法[1][2]。WSOLA是重叠和添加(OLA)算法的扩展。在OLA算法中,时间域信号在间隔η处窗口,其中η=元素个数() -OverlapLength。为了构造时间尺度的修正输出音频,窗口以δ为间隔,其中δ≈η/α。α是由式指定的TSM因子α输入参数。

OLA算法在重建幅度谱方面做得很好,但可以在窗口之间引入相位跳变。WSOLA算法试图通过搜索平滑相位跳变乌索拉三角洲在η区间附近取样,以使相位跳变最小。该算法通过迭代搜索最佳窗口,使每个连续窗口相对于先前选择的窗口进行选择。

如果乌索拉三角洲被设置为0.,则算法简化为OLA。

参考文献

[1]垂饰,约翰坦和梅纳德米尔尔。“审查音乐信号的时间尺度修改。”应用科学. 2016年第6卷第2期。

[2]晾干器,约翰坦。“音乐音频信号的时间尺度修改算法”,硕士论文,萨尔兰大学,萨尔布吕肯,德国,2011年。

扩展能力

C / c++代码生成
使用Matlab®编码器生成C和C++代码™.

在R2019B中介绍