主要内容

stretchAudio

时拉音频

描述

例子

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

例子

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

例子

全部收缩

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

[AudioIn,FS] = audioread(“计数-16-44p1-mono-15secs.wav”);t =(0:size(audioin,1)-1)/ fs;plot(t,audioin)xlabel('时间'')ylabel(“振幅”)标题(原始信号的)轴网格

图中包含一个坐标轴。具有标题原始信号的轴包含类型线的对象。

声音(AudioIn,FS)

采用stretchAudio申请1.5加速因子。收听修改后的音频信号并随时间绘制它。采样率保持不变,但信号的持续时间降低。

AudioOut = LigressAudio(AudioIn,1.5);t =(0:大小(频声,1)-1)/ fs;plot(t,abusout)xlabel('时间'')ylabel(“振幅”)标题('修改信号,加速因子= 1.5')轴网格

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

声音(频道,FS)

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

Auditout = LigressAudio(AudioIn,0.75);t =(0:大小(频声,1)-1)/ fs;plot(t,abusout)xlabel('时间'')ylabel(“振幅”)标题('修改信号,加速因子= 0.75')轴网格

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

声音(频道,FS)

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

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

[AudioIn,FS] = audioread('FemaleSpeech-16-8-Mono-3secs.wav');声音(AudioIn,FS)T =(0:Size(AudioIn,1)-1)/ FS;plot(t,audioin)xlabel('时间'')ylabel(“振幅”)标题(原始信号的)轴网格

图中包含一个坐标轴。具有标题原始信号的轴包含类型线的对象。

将音频信号转换为频域。

win = sqrt(hann(256,'定期'));OVRLP = 192;s = stft(isainin,'窗户',赢了,'overlaplencth',OVRLP,'中心',错误的);

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

alpha = 1.4;Auditout = LigressAudio(S,Alpha,'窗户',赢了,'overlaplencth',ovrlp);声音(呼啸声,FS)T =(0:尺寸(发射机,1)-1)/ fs;plot(t,abusout)xlabel('时间'')ylabel(“振幅”)标题('修改信号,TSM因子= 1.4')轴网格

图中包含一个坐标轴。具有标题修改信号的轴,TSM因子= 1.4包含类型线的对象。

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

α= 0.8;Auditout = LigressAudio(S,Alpha,'窗户',赢了,'overlaplencth',ovrlp);声音(呼啸声,FS)T =(0:尺寸(发射机,1)-1)/ fs;plot(t,abusout)xlabel('时间'')ylabel(“振幅”)标题('修改信号,TSM因子= 0.8')轴网格

图中包含一个坐标轴。标题为Modified Signal, TSM Factor = 0.8的轴包含一个类型为line的对象。

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

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

[AudioIn,FS] = audioread(“SpeechDFT-16-8-mono-5secs.wav”);声音(AudioIn,FS)T =(0:Size(AudioIn,1)-1)/ FS;plot(t,audioin)xlabel('时间'')ylabel(“振幅”)标题(原始信号的)轴网格

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

alpha = 1.8;TIC AUDIOOUT = LAJRIGAUDIO(AudioIn,Alpha);processingTimewithoutphaseLocking = TOC.
加工节省inewithoutphaseLocking = 0.0798.
声音(呼啸声,FS)T =(0:尺寸(发射机,1)-1)/ fs;plot(t,abusout)xlabel('时间'')ylabel(“振幅”)标题(“修改信号,alpha = 1.8,锁定} = false”)轴网格

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

Tic Auditout = LigressAudio(AudioIn,Alpha,“锁定”,真的);processingtimeewithphaseLocking = TOC.
ProcessingTimewithPhaseLocking = 0.1154.
声音(呼啸声,FS)T =(0:尺寸(发射机,1)-1)/ fs;plot(t,abusout)xlabel('时间'')ylabel(“振幅”)标题('Modified Signal, alpha = 1.8, LockPhase = true')轴网格

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

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

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

使用WSOLA方法将TSM系数0.75施加到输入音频信号。收听由此产生的音频信号的前10秒。

α= 0.75;Tic Auditout = LigressAudio(AudioIn,Alpha,“方法”“WSOLA”);ProcessingTimewithDefaultWsoladelta = TOC.
processingTimeWithDefaultWSOLADelta = 19.4403
声音(频道(1:10 * FS,:),FS)

将TSM系数施加0.75到输入音频信号,这次将WSOLA增量增加到1024.收听所产生的音频信号的前10秒。

Tic Auditout = LigressAudio(AudioIn,Alpha,“方法”“WSOLA”“Wsoladelta”,1024);ProcessingTimewithIncreaseWsoladelta = TOC.
ProcessionTimewithincreasceficwsoladelta = 25.5306.
声音(频道(1:10 * FS,:),FS)

输入参数

全部收缩

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

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

    此语法适用于什么时候方法被设置为'vocoder'要么'WSOLA'

  • 如果奥地策很复杂,奥地策被解释为频域信号。在这种情况下,奥地策必须是AN.L.——- - - - - -m——- - - - - -N阵列,其中L.是fft长度,m是个别光谱的数量,和N是渠道的数量。

    此语法仅适用于什么时候方法被设置为'vocoder'

数据类型:单身的|
复数支持:金宝app是的

TSM因子,指定为正标量。

数据类型:单身的|

名称值对参数

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

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

用于时间缩放音频的方法,指定为包括的逗号分隔对'方法''vocoder'要么'WSOLA'.集'方法''vocoder'使用相位声码器方法。集'方法''WSOLA'使用WSOLA方法。

如果'方法'被设置为'vocoder'奥地策可以是真实的或复杂的。如果'方法'被设置为'WSOLA'奥地策必须是真实的。

数据类型:单身的|

在时域中应用的窗口,指定为逗号分隔对组成'窗户'和一个真正的矢量。向量中的元素数必须在范围[1,尺寸(奥地策, 1)].向量中的元素数也必须大于OverlapLength

笔记

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

数据类型:单身的|

相邻窗口之间重叠的样本数,指定为由逗号分隔的对组成'overlaplencth'并且范围内的整数[0,numel(窗口))。

笔记

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

数据类型:单身的|

应用标识锁相,指定为逗号分隔对,由“LockPhase”错误的要么真的

依赖性

要启用此名称-值对参数,请设置方法'vocoder'

数据类型:逻辑

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

依赖性

要启用此名称-值对参数,请设置方法'WSOLA'

数据类型:单身的|

输出参数

全部收缩

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

算法

全部收缩

阶段声码器

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

  1. 算法Windows间隔η时的时域信号η=元素个数(窗户) -OverlapLength.然后将窗口转换为频域。

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

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

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

WSOLA.

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

OLA算法进行重新创建幅度谱但可以在Windows之间引入阶段跳跃的良好工作。WSOLA算法尝试通过搜索来平滑相位跳转Wsoladelta在η区间附近取样,以使相位跳变最小。该算法通过迭代搜索最佳窗口,使每个连续窗口相对于先前选择的窗口进行选择。

如果Wsoladelta被设置为0.然后,算法减少到OLA。

参考文献

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

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

扩展能力

C / c++代码生成
使用MATLAB®Coder™生成C和C ++代码。

在R2019B中介绍