Octave 提供了一些用于处理音频数据的函数。音频"采样"是 A/D 转换器的单个输出值,即一个较小的整数(通常为 8 位或 16 位),而音频数据就是一系列这样的采样。它可以通过三个参数来表征:采样率(以每秒采样数或 Hz 为单位,例如 8000 或 44100)、每个采样的位数(例如 8 或 16)以及通道数(1 表示单声道,2 表示立体声,以此类推)。
表示此类数据的格式有很多种。目前,Octave 仅支持最流行的两种格式:线性编码和 μ律编码。Guido van Rossum 有一份关于音频格式的精彩 FAQ(常见问题解答),邮箱为 [email protected],可在任何 FAQ FTP 站点找到,特别是在归档站点 rtfm.mit.edu 的 /pub/usenet/news.answers/audio-fmts 目录中。
Octave 简单地将音频数据视为采样的向量(目前尚不支持非单声道数据)。假设使用线性编码的音频文件具有 lin 或 raw 扩展名,而保存 μ 律编码数据的文件以 au、mu 或 snd 结尾。
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(默认值)时,线性值使用范围为 -linmax ≤ x ≤ linmax 的浮点数值,其中 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 类。
(y) ¶(y, fs) ¶(y, fs, nbits) ¶以采样率 fs 将音频数据 y 播放到默认音频设备。
音频信号 y 可以是一个向量(表示单声道)或一个两列数组(表示立体声)。
如果未指定 fs,则使用默认采样率每秒 8000 个采样。
可选参数 nbits 指定播放到音频设备的位深度,默认为 8 位。
要对音频播放进行更多控制,请使用 audioplayer 类。
(y) ¶(y, fs) ¶(y, fs, nbits) ¶(…, [ymin, ymax]) ¶缩放音频数据 y,并以采样率 fs 将其播放到默认音频设备。
音频信号 y 可以是一个向量(表示单声道)或一个两列数组(表示立体声)。
如果未指定 fs,则使用默认采样率每秒 8000 个采样。
可选参数 nbits 指定播放到音频设备的位深度,默认为 8 位。
默认情况下,y 会自动归一化到范围 [-1, 1]。如果给定了范围 [ymin, ymax],则 y 中落在 ymin ≤ y ≤ ymax 范围内的元素将被缩放到范围 [-1, 1]。
要对音频播放进行更多控制,请使用 audioplayer 类。
另请参阅: sound、@audioplayer/audioplayer、record。
版权所有 © 2024-2026 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-4