stretchAudio
Time-stretch音频
描述
例子
使用TSM
读入一个音频信号。听音频信号和阴谋。
[audioIn, fs] = audioread (“Counting-16-44p1-mono-15secs.wav”);t =(0:大小(audioIn, 1) 1) / fs;情节(t, audioIn)包含(“时间(s)”)ylabel (“振幅”)标题(原始信号的)轴紧网格在
声音(audioIn fs)
使用stretchAudio
1.5应用加速因子。听修改后的音频信号和阴谋。采样率是相同的,但信号的持续时间减少。
audioOut = stretchAudio (audioIn, 1.5);t =(0:大小(audioOut, 1) 1) / fs;情节(t, audioOut)包含(“时间(s)”)ylabel (“振幅”)标题(修改后的信号,加速系数= 1.5)轴紧网格在
声音(audioOut fs)
减缓0.75原始音频信号的因素。听修改后的音频信号和阴谋。与原始音频采样率是相同的,但信号的持续时间增加了。
audioOut = stretchAudio (audioIn, 0.75);t =(0:大小(audioOut, 1) 1) / fs;情节(t, audioOut)包含(“时间(s)”)ylabel (“振幅”)标题(修改后的信号,加速系数= 0.75)轴紧网格在
声音(audioOut fs)
TSM适用于频域音频
stretchAudio
金宝app支持TSM在频域音频在使用默认声码器的方法。TSM应用到频域音频可以重用你的STFT计算多个TSM因素。
读入一个音频信号。听音频信号和阴谋。
[audioIn, fs] = audioread (“FemaleSpeech-16-8-mono-3secs.wav”);声音(audioIn fs) t =(0:大小(audioIn, 1) 1) / fs;情节(t, audioIn)包含(“时间(s)”)ylabel (“振幅”)标题(原始信号的)轴紧网格在
将音频信号转换为频率域。
赢得=√损害(256“周期”));ovrlp = 192;S = stft (audioIn“窗口”,赢了,“OverlapLength”ovrlp,“中心”、假);
加速1.4倍的音频信号。指定窗口和重叠长度用来创建频域表示。
α= 1.4;audioOut = stretchAudio(年代,α,“窗口”,赢了,“OverlapLength”,ovrlp);声音(audioOut fs) t =(0:大小(audioOut, 1) 1) / fs;情节(t, audioOut)包含(“时间(s)”)ylabel (“振幅”)标题(修改后的信号,TSM系数= 1.4)轴紧网格在
减缓音频信号的0.8倍。指定窗口和重叠长度用来创建频域表示。
α= 0.8;audioOut = stretchAudio(年代,α,“窗口”,赢了,“OverlapLength”,ovrlp);声音(audioOut fs) t =(0:大小(audioOut, 1) 1) / fs;情节(t, audioOut)包含(“时间(s)”)ylabel (“振幅”)标题(修改后的信号,TSM系数= 0.8)轴紧网格在
增加忠诚使用锁相
默认TSM方法(声码器)使您可以另外申请锁相增加忠诚到原始音频。
读入一个音频信号。听音频信号和阴谋。
[audioIn, fs] = audioread (“SpeechDFT-16-8-mono-5secs.wav”);声音(audioIn fs) t =(0:大小(audioIn, 1) 1) / fs;情节(t, audioIn)包含(“时间(s)”)ylabel (“振幅”)标题(原始信号的)轴紧网格在
锁相添加了一个重要的计算负载TSM和并不总是必需的。默认情况下,锁相是禁用的。1.8的加速因子应用于输入音频信号。听音频信号和阴谋。
α= 1.8;抽搐audioOut = stretchAudio (audioInα);processingTimeWithoutPhaseLocking = toc
processingTimeWithoutPhaseLocking = 0.0798
声音(audioOut fs) t =(0:大小(audioOut, 1) 1) / fs;情节(t, audioOut)包含(“时间(s)”)ylabel (“振幅”)标题(修改后的信号,α= 1.8,LockPhase =假')轴紧网格在
1.8应用相同的加速因子输入音频信号,使锁相。听音频信号和阴谋。
抽搐audioOut = stretchAudio (audioInα,“LockPhase”,真正的);processingTimeWithPhaseLocking = toc
processingTimeWithPhaseLocking = 0.1154
声音(audioOut fs) t =(0:大小(audioOut, 1) 1) / fs;情节(t, audioOut)包含(“时间(s)”)ylabel (“振幅”)标题(修改后的信号,α= 1.8,LockPhase = true”)轴紧网格在
增加使用WSOLA三角洲忠诚
波形相似性交叠相加(WSOLA) TSM方法使您能够指定的最大数量样品寻找最好的信号对齐。默认情况下,WSOLA三角洲是样品在分析窗口的数量减去样品的数量之间的重叠相邻分析窗口。增加WSOLA三角洲增加计算负载但也可能增加忠诚。
读入一个音频信号。听第一个10秒的音频信号。
[audioIn, fs] = audioread (“rockguitar - 16 - 96立体声- 72 secs.flac”);声音(audioIn (1:10 * fs,:), fs)
TSM因素0.75适用于使用WSOLA输入音频信号的方法。听第一个10秒的音频信号。
α= 0.75;抽搐audioOut = stretchAudio (audioInα,“方法”,“wsola”);processingTimeWithDefaultWSOLADelta = toc
processingTimeWithDefaultWSOLADelta = 19.4403
声音(audioOut (1:10 * fs,:), fs)
TSM因素0.75适用于输入音频信号,这一次增加WSOLAδ- 1024。听第一个10秒的音频信号。
抽搐audioOut = stretchAudio (audioInα,“方法”,“wsola”,“WSOLADelta”,1024);processingTimeWithIncreasedWSOLADelta = toc
processingTimeWithIncreasedWSOLADelta = 25.5306
声音(audioOut (1:10 * fs,:), fs)
输入参数
audioIn
- - - - - -输入信号
列向量|矩阵|三维数组
输入信号,指定为一个列向量,矩阵,或三维数组。函数如何解释audioIn
取决于的复杂性audioIn
和的值方法
:
如果
audioIn
是真实的,audioIn
被解释为一个时域信号。在这种情况下,audioIn
必须是一个列向量或矩阵。列是解释为个人渠道。这个语法适用于当
方法
被设置为声码器的
或“wsola”
。如果
audioIn
是复杂的,audioIn
被解释为一个频域的信号。在这种情况下,audioIn
必须是一个l——- - - - - -米——- - - - - -N数组,l是FFT长度,米是个体数量的光谱,N通道的数量。这个语法只适用于当
方法
被设置为声码器的
。
数据类型:单
|双
复数的支持:金宝app是的
α
- - - - - -TSM因素
积极的标量
TSM因素,指定为一个积极的标量。
数据类型:单
|双
名称-值参数
指定可选的双参数作为Name1 = Value1,…,以=家
,在那里的名字
参数名称和吗价值
相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。
R2021a之前,用逗号来分隔每一个名称和值,并附上的名字
在报价。
例子:“窗口”,kbdwin (512)
方法
- - - - - -方法用于时间尺度的音频
声码器的
(默认)|“wsola”
方法用于时间尺度音频、指定为逗号分隔组成的“方法”
和声码器的
或“wsola”
。集“方法”
来声码器的
使用阶段声码器的方法。集“方法”
来“wsola”
使用WSOLA方法。
如果“方法”
被设置为声码器的
,audioIn
可以真实的或复杂的。如果“方法”
被设置为“wsola”
,audioIn
必须是真实的。
数据类型:单
|双
窗口
- - - - - -应用于时域窗口
√损害(1024年,“周期性”))
(默认)|真正的向量
应用于时域窗口,指定为逗号分隔组成的“窗口”
和一个真正的向量。向量中的元素的数量必须在[1,大小(
]。向量中的元素的数量也必须大于audioIn
,1)OverlapLength
。
请注意
如果使用stretchAudio
与频域输入,您必须指定窗口
同一个窗口用于转换audioIn
频域。
数据类型:单
|双
OverlapLength
- - - - - -数量的样本之间的重叠相邻窗口
轮(0.75 *元素个数(窗口
))
(默认)|标量范围在[0元素个数(窗口
)
)
窗口
))窗口
)数量的样本之间的重叠相邻窗口,指定为逗号分隔组成的“OverlapLength”
和一个整数范围在[0,元素个数(窗口)
)。
请注意
如果使用stretchAudio
与频域输入,您必须指定OverlapLength
相同的重叠长度用来变换audioIn
时频表示。
数据类型:单
|双
LockPhase
- - - - - -应用身份锁相
假
(默认)|真正的
WSOLADelta
- - - - - -最大样本用于搜索最佳信号对齐
元素个数(窗口
)- - -OverlapLength
(默认)|负的标量
窗口
)- - -OverlapLength
输出参数
audioOut
——时间尺度修改音频
矩阵列向量|
时标修改音频,返回的列向量或矩阵独立通道。
算法
阶段声码器
WSOLA
TSM WSOLA算法是一种时域方法[1][2]。WSOLA是重叠和添加的扩展(OLA)算法。在OLA算法,在间隔η,时域信号窗口的η=元素个数(
。构建时标修改输出音频,在间隔δ窗户间隔,δ≈η/α。α是指定的TSM因素窗口
)- - -OverlapLength
α
输入参数。
OLA算法很好地重建光谱级但可以引入阶段窗口之间跳跃。WSOLA算法试图平稳阶段跳跃通过搜索WSOLADelta
样品在η间隔的窗口最小化阶段跳跃。迭代算法搜索最佳的窗口,所以,每一个选择窗口相对于以前选定的窗口。
如果WSOLADelta
被设置为0
OLA,那么该算法减少了。
引用
[1]Driedger, Johnathan, Meinard穆勒。“回顾时标修改音乐信号。”应用科学。问题2卷。6日,2016年。
[2]Driedger, Johnathan。“时间尺度修正算法对音乐音频信号”,硕士论文,萨尔州大学萨尔布吕肯,德国,2011年。
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
GPU数组
加速代码运行在一个图形处理单元(GPU)使用并行计算工具箱™。
使用笔记和限制:
方法
必须设置为声码器的
。LockPhase
必须设置为假
。使用
gpuArray
(并行计算工具箱)输入与stretchAudio
只建议GPU的计算能力7.0(“沃尔特”)或以上。其他硬件可能不提供任何性能优势。检查你的GPU计算能力,明白了ComputeCompability
的输出gpuDevice
(并行计算工具箱)函数。有关更多信息,请参见GPU的金宝app支持版本(并行计算工具箱)。
在MATLAB GPU使用量的概述®,请参阅运行在GPU MATLAB函数(并行计算工具箱)。
版本历史
Beispiel offnen
您有一张这本Beispiels geanderte版本。您这本Beispiel麻省理工学院古老Anderungen offnen吗?
MATLAB-Befehl
您有窗户的链接geklickt,汪汪汪der diesem MATLAB-Befehl entspricht:
在das MATLAB-Befehlsfenster Fuhren您窝Befehl军队Eingabe来自。浏览器unterstutzen MATLAB-Befehle。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。