主要内容

Audiotimescester

将时间缩放应用于流式音频

描述

Audiotimescester对象在每个输入通道上独立地执行音频时间尺度修改(TSM)。

修改流音频的时间尺度:

  1. 创造Audiotimescester对象并设置其属性。

  2. 使用参数调用对象,就像它是一个函数。

要了解有关系统对象如何工作的更多信息,请参阅什么是系统对象?

创建

描述

ats.= AudioSImescaler.创建一个对象,ats.,它随着时间的推移在每个输入通道上独立地执行音频时间尺度修改。

ats.= Audiotimescaper(speedupfactor.设置speedupfactor.财产speedupfactor.

ats.= Audiotimescaper(___'姓名',价值设置每个属性名称到了指定的价值。未指定的属性具有默认值。

例子:ATS = AudioIsimescaler(1.2,'窗口',SQRT(HANN(1024,'定期')),'overlaplenth',768)创建一个对象,ats.,它使用周期性1024点HANN窗口和768点重叠将音频的节奏增加1.2倍。

特性

展开全部

除非另有说明,否则属性是不可努力,这意味着在调用对象后无法更改其值。当您调用它们时,对象锁定释放功能解锁它们。

如果属性是调节,您可以随时更改其值。

有关更改属性值的详细信息,请参阅MATLAB使用系统对象的系统设计

加速因子,指定为正实标量。

可调:是的

数据类型:单身的|双倍的|INT8.|int16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64

输入信号的域,指定为“时间”或者“频率”

数据类型:char|细绳

分析窗口,指定为真正的矢量。

笔记

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

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

相邻分析窗口的重叠长度,指定为非负整数。

笔记

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

数据类型:单身的|双倍的|INT8.|int16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64

FFT长度,指定为正整数。默认值,[],意味着FFT长度等于输入信号中的行数。

依赖性

启用此属性,设置inputDomain.'时间'

数据类型:单身的|双倍的|INT8.|int16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64

应用身份阶段锁定,指定为真的或者错误的

数据类型:逻辑

用法

描述

例子

音频输出= ats(奥地策将时间尺度修改应用于输入,奥地策,并返回时间缩放输出,音频输出

输入参数

展开全部

输入音频,指定为列向量或矩阵。如何Audiotimescester解释奥地策取决于inputDomain.财产。

  • 如果inputDomain.设定为“时间”奥地策必须是一个真实的N- 1栏载体或N-经过-C矩阵。行数,N,必须等于或小于跳长度(尺寸(奥地策,1)<= numel(窗户) -overtaplenth)。矩阵的列被解释为单独的通道。

  • 如果inputDomain.设定为“频率”, 指定奥地策作为一个真实或复杂的NFFT.- 1栏载体或NFFT.-经过-C矩阵。行数,NFFT.,是DFT计算中的点数,并设置在对音频时间缩放器的第一个呼叫中。NFFT.必须大于或等于窗口长度(尺寸(奥地策,1)> = numel(窗户)。矩阵的列被解释为单独的通道。

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

输出参数

展开全部

时间拉伸音频,作为列向量或矩阵返回。

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

对象功能

要使用对象功能,请将System Object™指定为第一个输入参数。例如,要发布命名的系统对象的系统资源obj.,使用此语法:

释放(obj)

展开全部

跑步系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特性
重启 重置内部状态系统对象

例子

全部收缩

为了最大限度地减少由窗口引起的工件,创建一个能够完美重建的平方根HANN窗口。用iscra.验证设计。

WIN = SQRT(HANN(1024,'定期'));overtaplength = 896;ISCOLA(WIN,VOLLAPLENCH)
ans =.逻辑1

创建一个Audiotimescester加速因子1.5。改变价值α听到加速因子的效果。

alpha =1.5;ATS = AudioIISIMESCALER(......'speedupfactor',α,......'窗户',赢,......'overlaplencth',俯视长度);

创建一个dsp.audiofilereader.对象从音频文件读取帧。输入到音频时间缩放器的帧长必须小于或等于定义的分析跳长度Audiotimescester。要最小化缓冲,请将文件读取器的每个帧设置为分析跳长度。

hoplength = numel(ats.window) -  overtaplength;filereader = dsp.audiofilereader('Counting-16-44p1-mono-15secs.wav'......'samplesperframe',hoplength);

创建一个audiodevicewriter.将帧写入音频设备。使用与文件读取器相同的采样率。

devicewriter = audiodevicewriter('采样率',filereader.samplerate);

在音频流循环中,读取文件,应用时间尺度修改,然后向设备写入帧。

尽管〜ISDONE(FILEREADER)AUDION = FILEREADER();AudioOut = ATS(AudioIn);DEVICEWRITER(通风);结尾

作为最佳实践,完成后释放您的对象。

释放(DeviceWriter)释放(Filereader)释放(ATS)

创建一个能够完美重建的窗口。用iscra.验证设计。

WIN = KBDWIN(512);overtaplength = 256;ISCOLA(WIN,VOLLAPLENCH)
ans =.逻辑1

创建一个Audiotimescester加速因子0.8。放inputDomain.“频率”并指定用于将时域音频转换为频域的窗口和重叠长度。放锁链真的增加时间缩放输出中的保真度。

alpha = 0.8;TimescaleModification = AudioIsimescaler(......“speedupfactor”,α,......“inputDomain”“频率”......“窗户”,赢,......“overlaplength”,overtaplength,......“锁定”,真的);

创建一个dsp.audiofilereader.对象从音频文件读取帧。创建一个dsp.stft.对象在流式音频上执行短时傅里叶变换。指定您用于创建的相同窗口和重叠长度Audiotimescester。创建一个audiodevicewriter.对象将帧写入音频设备。

filereader = dsp.audiofilereader('Rockdrums-44p1-stereo-11secs.mp3''samplesperframe',数量(Win)-overlaplength);shorttimefouriertransform = dsp.stft('窗户',赢,'overlaplencth',overtaplength,'fftlength',秩序(胜利));devicewriter = audiodevicewriter('采样率',filereader.samplerate);

在一个音频流循环中:

  1. 从文件中读取帧。

  2. 将帧输入到Stft。这dsp.stft.对象执行缓冲。

  3. 应用时间尺度修改。

  4. 将修改后的音频写入音频设备。

尽管〜ISDONE(FILEREADER)x = filereader();x = ShorttimefourierTransform(x);y =时间尺度(x);devicewriter(y);结尾

作为最佳实践,完成后释放您的对象。

释放(FILEREADER)释放(SHORTTIMEFOURIERTRANSFORM)释放(时间尺度次数)释放(DEVICEWRITER)

算法

Audiotimescester使用与相同的相位声码器算法为延星并且是基于描述的描述[1][2]

参考

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

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

扩展能力

在R2019B中介绍