Linux下使用Octave对文件进行读写操作

树叶云

Octave 是一个 Linux 上类似于 Matlab 的软件,它拥有数量众多的函数和命令,支持声音采集、记录、回放以及音频信号的数字化处理,用于娱乐应用、研究、医学以及其它科学领域。在

环境准备

首先是安装 octave,在 Ubuntu 终端运行下面的命令添加 Octave PPA,然后安装 Octave 。

sudo apt-add-repository ppa:octave/stable
sudo apt-get update
sudo apt-get install octave

步骤1:打开 Octave

在这一步中我们单击软件图标打开 Octave,可以通过单击下拉式按钮选择工作路径。

步骤2:音频信息

使用audioinfo命令查看要处理的音频文件的相关信息。

>> info = audioinfo ('testing.ogg')

步骤3:读取音频文件

在本教程中我会使用 ogg 文件来读取这种文件的属性,比如采样、音频类型(stereo 和 mono)、信道数量等。必须声明的一点是教程中使用的所有的命令都是在 Octave 终端窗口中执行的。首先,我们必须要把这个 ogg 文件赋给一个变量。注意:文件必须在 Octave 的工作路径中。

>> file='yourfile.ogg'
>> [M, fs] = audioread(file)

这里的 M 是一个一列或两列的矩阵,取决于信道的数量,fs 是采样率。

下面的操作都可以读取音频文件:

>> [y, fs] = audioread (filename, samples)

>> [y, fs] = audioread (filename, datatype)

>> [y, fs] = audioread (filename, samples, datatype)

samples 指定开始帧和结束帧,datatype 指定返回的数据类型。可以为所有变量设置值:

>> samples = [1, fs)

>> [y, fs] = audioread (filename, samples)

数据类型:

>> [y,Fs] = audioread(filename,'native')

如果值是“native”,那么它的数据类型就依数据在音频文件中的存储情况而定。

步骤4:音频文件的写操作

新建一个 ogg 文件:

我们会从一个余弦值创建一个 ogg 文件。采样率是每秒 44100 次,这个文件最少进行 10 秒的采样。余弦信号的频率是 440 Hz。

>> filename='cosine.ogg';
>> fs=44100;
>> t=0:1/fs:10;
>> w=2*pi*440*t;
>> signal=cos(w);
>> audiowrite(filename, signal, fs);

这就在工作路径中创建了一个 ‘cosine.ogg’ 文件,这个文件中包含余弦信号。

播放这个 ‘cosine.ogg’ 文件就会产生一个 440Hz 的 音调,这个音调正好是乐理中的 ‘A’ 调。如果需要查看保存在文件中的值就必须使用 ‘audioread’ 函数读取文件。在后续的教程中,我们会看到怎样在两个信道中读取一个音频文件。

步骤5:播放音频文件

Octave 有一个默认的音频播放器,可以用这个音频播放器进行测试。使用下面的函数:

>> [y,fs]=audioread('yourfile.ogg');
>> player=audioplayer(y, fs, 8)

 scalar structure containing the fields:

   BitsPerSample =  8
   CurrentSample = 0
   DeviceID = -1
   NumberOfChannels =  1
   Running = off
   SampleRate =  44100
   TotalSamples =  236473
   Tag =
   Type = audioplayer
   UserData = [](0x0)
>> play(player);

在这个教程的续篇,我们会进入音频处理的高级特性部分,可能会接触到一些科学和商业应用中的实例。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/205494.html<

(0)
运维的头像运维
上一篇2025-04-07 15:39
下一篇 2025-04-07 15:41

相关推荐

  • 使用 OctoDNS 启用 DNS 分割权威

    构建一个健壮的系统需要为故障而设计。作为 GitHub 的网站可靠性工程师(SRE),我们一直在寻求通过冗余来帮助缓解问题,今天将讨论最近我们所做的工作,以便支持你通过 DNS 来…

  • Linux备份的重要性

    在前面的章节中,我们已经学习了很多有关 Linux 系统的安全防范策略(例如用户管理、权限管理等),但安全永远是相对的,而不是绝对的。系统硬件的损坏,黑客的无孔不入,都是系统安全的…

  • git代码合并两种方法

    git是最常见的项目管理工具,好多大型开发项目都会涉及使用git, 本篇文章重点为大家讲解一下git代码合并两种方法,有需要的小伙伴可以参考一下。 git Merge 这种合并是将…

  • Linux中常见的包管理器

    简单来说,Linux软件包管理工具是一组命令的集合,其作用是提供在操作系统中安装,升级,卸载需要的软件的方法,并提供对系统中所有软件状态信息的查询,下面为大家详细讲解一下Linux…

  • 通过Qt 给嵌入式Linux加个桌面

    本篇文章重点为大家分享一下如何用 Qt 实现一个 launcher (程序启动器)。代码很少,C++ 部分大约 100行代码。 下面是实现过程。 1. 创建 QML 应用 在 Qt…

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注