主要内容

stretchAudio

Time-stretch音频

描述

例子

audioOut= stretchAudio (audioIn,α)时间尺度适用于修改(TSM)输入音频的TSM的因素α

例子

audioOut= stretchAudio (audioIn,α,名称,值)使用一个或多个指定选项名称,值对参数。

例子

全部折叠

读入一个音频信号。听音频信号和阴谋。

[audioIn, fs] = audioread (“Counting-16-44p1-mono-15secs.wav”);t =(0:大小(audioIn, 1) 1) / fs;情节(t, audioIn)包含(“时间(s)”)ylabel (“振幅”)标题(原始信号的)轴网格

图包含一个坐标轴对象。标题为原始信号的坐标轴对象包含一个类型的对象。

声音(audioIn fs)

使用stretchAudio1.5应用加速因子。听修改后的音频信号和阴谋。采样率是相同的,但信号的持续时间减少。

audioOut = stretchAudio (audioIn, 1.5);t =(0:大小(audioOut, 1) 1) / fs;情节(t, audioOut)包含(“时间(s)”)ylabel (“振幅”)标题(修改后的信号,加速系数= 1.5)轴网格

图包含一个坐标轴对象。坐标轴对象与标题修改信号,加速系数= 1.5包含一个类型的对象。

声音(audioOut fs)

减缓0.75原始音频信号的因素。听修改后的音频信号和阴谋。与原始音频采样率是相同的,但信号的持续时间增加了。

audioOut = stretchAudio (audioIn, 0.75);t =(0:大小(audioOut, 1) 1) / fs;情节(t, audioOut)包含(“时间(s)”)ylabel (“振幅”)标题(修改后的信号,加速系数= 0.75)轴网格

图包含一个坐标轴对象。坐标轴对象与标题修改信号,加速系数= 0.75包含一个类型的对象。

声音(audioOut fs)

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)轴网格

图包含一个坐标轴对象。坐标轴对象与标题修改信号,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系数= 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) 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必须是一个列向量或矩阵。列是解释为个人渠道。

    这个语法适用于当方法被设置为声码器的“wsola”

  • 如果audioIn是复杂的,audioIn被解释为一个频域的信号。在这种情况下,audioIn必须是一个l——- - - - - -——- - - - - -N数组,l是FFT长度,是个体数量的光谱,N通道的数量。

    这个语法只适用于当方法被设置为声码器的

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

TSM因素,指定为一个积极的标量。

数据类型:|

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:“窗口”,kbdwin (512)

方法用于时间尺度音频、指定为逗号分隔组成的“方法”声码器的“wsola”。集“方法”声码器的使用阶段声码器的方法。集“方法”“wsola”使用WSOLA方法。

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

数据类型:|

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

请注意

如果使用stretchAudio与频域输入,您必须指定窗口同一个窗口用于转换audioIn频域。

数据类型:|

数量的样本之间的重叠相邻窗口,指定为逗号分隔组成的“OverlapLength”和一个整数范围在[0,元素个数(窗口))。

请注意

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

数据类型:|

应用身份锁相,指定为逗号分隔组成的“LockPhase”真正的

依赖关系

要启用这个名称-值对参数,设置方法声码器的

数据类型:逻辑

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

依赖关系

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

数据类型:|

输出参数

全部折叠

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

算法

全部折叠

阶段声码器

阶段声码器算法是一种频域方法TSM[1][2]。阶段声码器算法的基本步骤是:

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

  2. 保护水平(在时间)相位相干性,算法对每个本看作一个独立的正弦信号的相位计算通过积累其瞬时频率的估计。

  3. 保持垂直在单个光谱相位相干性,该算法锁箱组的相位超前相位超前的当地的山峰。此步骤仅适用于如果LockPhase被设置为真正的

  4. 该算法返回修改后的时域谱图,用间隔的与windows的δ,δ≈η/α。α是指定的加速因子α输入参数。

WSOLA

TSM WSOLA算法是一种时域方法[1][2]。WSOLA是重叠和添加的扩展(OLA)算法。在OLA算法,在间隔η,时域信号窗口的η=元素个数(窗口)- - -OverlapLength。构建时标修改输出音频,在间隔δ窗户间隔,δ≈η/α。α是指定的TSM因素α输入参数。

OLA算法很好地重建光谱级但可以引入阶段窗口之间跳跃。WSOLA算法试图平稳阶段跳跃通过搜索WSOLADelta样品在η间隔的窗口最小化阶段跳跃。迭代算法搜索最佳的窗口,所以,每一个选择窗口相对于以前选定的窗口。

如果WSOLADelta被设置为0OLA,那么该算法减少了。

引用

[1]Driedger, Johnathan, Meinard穆勒。“回顾时标修改音乐信号。”应用科学。问题2卷。6日,2016年。

[2]Driedger, Johnathan。“时间尺度修正算法对音乐音频信号”,硕士论文,萨尔州大学萨尔布吕肯,德国,2011年。

扩展功能

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

版本历史

介绍了R2019b