33.5 音频数据处理

Octave 提供了一些用于处理音频数据的函数。音频"采样"是 A/D 转换器的单个输出值,即一个较小的整数(通常为 8 位或 16 位),而音频数据就是一系列这样的采样。它可以通过三个参数来表征:采样率(以每秒采样数或 Hz 为单位,例如 8000 或 44100)、每个采样的位数(例如 8 或 16)以及通道数(1 表示单声道,2 表示立体声,以此类推)。

表示此类数据的格式有很多种。目前,Octave 仅支持最流行的两种格式:线性编码μ律编码。Guido van Rossum 有一份关于音频格式的精彩 FAQ(常见问题解答),邮箱为 ,可在任何 FAQ FTP 站点找到,特别是在归档站点 rtfm.mit.edu/pub/usenet/news.answers/audio-fmts 目录中。

Octave 简单地将音频数据视为采样的向量(目前尚不支持非单声道数据)。假设使用线性编码的音频文件具有 linraw 扩展名,而保存 μ 律编码数据的文件以 aumusnd 结尾。

 
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 为 0(默认值)时,线性值使用范围为 -linmaxxlinmax 的浮点数值,其中 linmax = 32124/32768 =~ 0.98。如果 n 为 8 或 16,则使用 n 位有符号整数。

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

另请参阅: lin2mu

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

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

如果给出了可选参数 fs,则指定录制的采样率。

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

另请参阅: @audiorecorder/audiorecordersoundsoundsc

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

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

音频信号 y 可以是一个向量(表示单声道)或一个两列数组(表示立体声)。

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

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

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

另请参阅: soundsc@audioplayer/audioplayerrecord

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

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

音频信号 y 可以是一个向量(表示单声道)或一个两列数组(表示立体声)。

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

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

默认情况下,y 会自动归一化到范围 [-1, 1]。如果给定了范围 [ymin, ymax],则 y 中落在 yminyymax 范围内的元素将被缩放到范围 [-1, 1]。

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

另请参阅: sound@audioplayer/audioplayerrecord


版权所有 © 2024-2026 Octave中文网

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