主要内容

shiftPitch.

移位音频音频

描述

例子

音频输出= ShiftPitch(奥地策NSEMITONE.通过指定数量的半音转移音频输入的音高,NSEMITONE.

例子

音频输出= ShiftPitch(奥地策NSEMITONE.名称,价值使用一个或多个指定选项名称,价值对论点。

例子

全部收缩

阅读音频文件并收听它。

[AudioIn,FS] = audioread('Counting-16-44p1-mono-15secs.wav');声音(AudioIn,FS)

通过3个半音增加音调并听取结果。

nsemitones = 3;AudioOut = ShiftPitch(AudioIn,NSEmitores);声音(频道,FS)

通过3个半音减少原始音频的音高并倾听结果。

nsemitones = -3;AudioOut = ShiftPitch(AudioIn,NSEmitores);声音(频道,FS)

阅读音频文件并收听它。

[AudioIn,FS] = audioread(“speemdft-16-8-mono-5secs.wav”);声音(AudioIn,FS)

使用时频率表示将音频信号转换为时频表示st。使用512点kbdwin.75%重叠。

WIN = KBDWIN(512);overtaplength = 0.75 * numel(win);s = stft(isainin,......“窗户”,赢,......“overlaplength”,overtaplength,......“以”为中心“,错误的);

增加8个半音的音调,并听取结果。指定您用于计算STFT的窗口和重叠长度。

nsemitones =8.;锁链=错误的;AudioOut = ShiftPitch(S,NSEmitones,......“窗户”,赢,......“overlaplength”,overtaplength,......“锁定”,锁链);声音(频道,FS)

通过8个半音减少原始音频的音高,并听取结果。指定您用于计算STFT的窗口和重叠长度。

nsemitones =-8;锁链=错误的;AudioOut = ShiftPitch(S,NSEmitones,......“窗户”,赢,......“overlaplength”,overtaplength,......“锁定”,锁链);声音(频道,FS)

阅读音频文件并收听它。

[AudioIn,FS] = audioread('FemaleSpeech-16-8-Mono-3secs.wav');声音(AudioIn,FS)

通过6个半音增加音调并倾听结果。

nsemitones = 6;lockphase = false;Auditout = ShiftPitch(AudioIn,Nsemitones,......'锁骨',锁链);声音(频道,FS)

增加保真度,设置锁链真的。施加音调移位,听取结果。

lockphase = true;Auditout = ShiftPitch(AudioIn,Nsemitones,......'锁骨',锁链);声音(频道,FS)

在音频文件的第一个11.5秒内读取并收听它。

[AudioIn,FS] = audioread('rainbow-16-8-mono-114secs.wav',[1,8e3 * 11.5]);声音(AudioIn,FS)

增加4个半音的音调并施加阶段锁定。听结果。由此产生的音频具有“花栗鼠效果”,声音不自然。

nsemitones =4.;锁链=真的;Auditout = ShiftPitch(AudioIn,Nsemitones,......“锁定”,锁链);声音(频道,FS)

增加保真度,设置保存格子真的。使用默认的剖腹产顺序30.。倾听结果。

Cepstralorder =.30.;Auditout = ShiftPitch(AudioIn,Nsemitones,......“锁定”,锁链,......“保存格子”,真的,......“cepstralorder”,克斯特兰尔德);声音(频道,FS)

输入参数

全部收缩

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

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

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

数据类型:单身的|双倍的
复数支持:万博1manbetx是的

以将音频移位的半音数量,指定为真正的标量。

范围NSEMITONE.取决于窗口长度(numel(窗户)和重叠长度(overtaplenth):

-12 * log2(numel(窗户) -overtaplenth≤.NSEMITONE.≤.-12 * log2((numel(窗户) -overtaplenth/ numel(窗户)))

数据类型:单身的|双倍的

名称值对参数

指定可选的逗号分离对名称,价值论点。名称是参数名称和价值是相应的价值。名称必须出现在引号内。您可以以任何顺序指定多个名称和值对参数name1,value1,...,namen,valuen

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

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

笔记

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

数据类型:单身的|双倍的

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

笔记

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

数据类型:单身的|双倍的

应用身份阶段锁定,指定为逗号分隔的对组成'锁骨'错误的或者真的

数据类型:逻辑

保存成形夹,指定为逗号分隔的配对组成'保存格子'真的或者错误的。尝试使用倒谱分析来尝试形成植入保存。

数据类型:逻辑

用于格式保存的抗康斯兰语命令,指定为逗号分隔对'cepstralorder'和一个非负整数。

依赖性

启用此名称值对参数,设置保存格子真的

数据类型:单身的|双倍的

输出参数

全部收缩

间距移动音频,作为独立通道的列向量或矩阵返回。

算法

全部收缩

施加间距移位,shiftPitch.使用相位声码器修改音频的时间尺度,然后将修改的音频重新起来。时间尺度修改算法基于[1][2]并被实施在延星

在时间尺度修改后,shiftPitch.使用等于分析跳长度的插值因子和等于合成跳长度的抽取因子来执行采样率转换。重采样阶段的插值和抽取因子如下选择:分析跳长度被确定为analyshoploplence = numel(窗户) -overtaplenth。这shiftPitch.功能假设八度音阶中有12个半音,因此用于拉伸音频的加速因子是speedupfactor = 2 ^( -NSEMITONE./ 12)。加速因子和分析跳长度确定时间尺度修改的合成跳长度为synthesishoploplognte = round((1 / speedupfactor)* analysholloplence)

可实现的间距偏移由窗口长度(numel(窗户) 和overtaplenth。要查看关系,请注意,加速因子的方程可以被重写为:NSEMITONE.= -12 * log2(speedupfactor),合成跳长度的等式可以重写为speedupfactor = anchysishengh / synthesishoplength。使用简单的替代,NSEMITONES = -12 * log2(analysholloplence / shoreSishoploplength)。合成跳长度的实际范围是[1,numel(窗户]。可实现的间距班次范围是:

  • 最大数量的半音降低:-12 * log2(numel(窗户) -overtaplenth

  • 最大数量的半音提出:-12 * log2((numel(窗户) -overtaplenth/ numel(窗户)))

格式保存

俯仰换档可以改变间距偏移信号的光谱包络。要减少这种效果,可以设置保存格子真的。如果保存格子设定为真的,该算法试图使用抗康斯兰域中的迭代过程来估计光谱包络,如下所述[3][4]。对于原始谱,X,以及俯冲频谱,y,该算法估计如下的频谱包络。

对于第一次迭代,envx.一种设定为X。然后,算法在循环中重复这两个步骤:

  1. 低通滤波器倒谱表示envx.一种获得新的估计,envx.B.。这克斯特拉伦尔特参数控制Quefrency带宽。

  2. 为了更新当前最佳拟合,该算法采用当前频谱包络估计的逐个元素最大值和先前的频谱包络估计:

    E. N. V. X 一种 = 最大限度 E. N. V. X 一种 E. N. V. X B.

如果最大迭代次数(100.达到)或者如果估计的日志信封的所有频体都在原始日志频谱的给定公差范围内。公差设定为日志(10 ^(1/20))

最后,该算法通过估计的信封的比率来缩放音调偏移音频的频谱,元素 - 明智的比率:

y = y × E. N. V. X B. E. N. V. y B.

参考

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

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

[3] Axel Roebel和Xavier Rodet。“高效的光谱信封估计及其在俯仰移位和包络保存的应用。”国际音频效应国际会议,第30-35页。马德里,西班牙,2005年9月。HAL-01161334

[4] S. Imai和Y. Abe。“通过改进的倒氨酸法提取光谱包络萃取。”电子。并安排。在日本。卷。62-a,第4,1997号,第10-17页。

扩展能力

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

在R2019B中介绍