33.5音频数据处理

Octave提供了一些处理音频数据的函数。音频“采样”是a/D转换器的单个输出值,即小整数(通常为8或16位),音频数据只是一系列这样的采样。它可以从三个参数来表征:采样率(以每秒或Hz的样本为单位测量,例如8000或44100)、每个样本的位数(例如8或16)和通道数(1用于单声道,2用于立体声等)。

有许多不同的格式来表示这种数据。目前,只有两个最受欢迎,linear encodingmu-law,从Octave支持。Guido van Rossum有一个关于音频格式的优秀常见问题解答可以在任何常见问题ftp网站上找到,特别是在rtfm.mit.edu目录中的/pub/usenet/news.answers/audio-fmts.

Octave只是将音频数据视为样本向量(目前还不支持非单声道数据)。假设使用线性编码的音频文件以linraw扩展名结尾,并且以μ律编码保存数据的文件以au, musnd结尾.

 
: y = lin2mu (x)
: y = lin2mu (x, n)

将音频数据从线性转换为μ律。

如果n为0(默认值)则线性值使用范围为-1≤x≤1,如果n是8或16则为n-位有符号整数。μ律值是8位无符号整数,范围为0≤y≤ 255.

详见: mu2lin.

 
: y = mu2lin (x)
: y = mu2lin (x, n)

将音频数据从μ律转换为线性。

μ律值为8位无符号整数,范围为0≤y≤ 255. 当n为零(默认值)时,线性值使用-linmaxx linmax范围中的浮点值。这里的linmax= 32124/32768 =~ 0.98。如果n是8或16则使用n-位有符号整数。

编程说明:mu2lin将最大μ律输入map到略低于用线性标度表示的最大值([-0.98,+0.98])的值。因此,mu2lin(lin2mu(x))可能无法再现原始输入。

详见: lin2mu.

 
: data = record (sec)
: data = record (sec, fs)

系统默认音频输入录制sec秒的音频,数据采样率为每秒8000个样本。

可选参数fs指定了录制的采样率。

要对音频录制进行更多控制,请使用audiorecorder类。

详见: @audiorecorder/audiorecorder, sound, soundsc.

 
: sound (y)
: sound (y, fs)
: sound (y, fs, nbits)

播放音频数据y以采样率fs到默认音频设备。

音频信号y可以是分别表示单声道或立体声音频的向量或两列数组。

如果fs如果未给定,则使用每秒8000个样本的默认采样率。

可选参数nbits指定要播放到音频设备的位深度,默认为8位。

要对音频播放进行更多控制,请使用audioplayer类。

详见: soundsc, @audiorecorder/audiorecorder, record.

 
: soundsc (y)
: soundsc (y, fs)
: soundsc (y, fs, nbits)
: soundsc (…, [ymin, ymax])

缩放音频数据y并以采样率播放fs到默认音频设备。

音频信号y可以是分别表示单声道或立体声音频的向量或两列数组。

如果fs如果未给定,则使用每秒8000个样本的默认采样率。

可选参数nbits指定要播放到音频设备的位深度,默认为8位。

默认情况下,y自动标准化为范围[-1,1]。如果给定范围[ymin, ymax]则在范围yminyymax内的y元素被缩放到范围[-1,1]。

要对音频播放进行更多控制,请使用audioplayer

详见: sound, @audioplayer/audioplayer, record.


版权所有 © 2024 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号