文档章节

如何使用Octave 在Ubuntu上科学处理音频

linuxprobe
 linuxprobe
发布于 2016/09/16 13:26
字数 893
阅读 59
收藏 0

如何使用Octave 在Ubuntu上科学处理音频如何使用Octave 在Ubuntu上科学处理音频

本教程中关注的不是安装和学习使用安装好的音频处理软件,而是从设计和音频工程的角度理解它是如何工作的。

环境准备

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

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

步骤1:打开 Octave

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

如何使用Octave 在Ubuntu上科学处理音频如何使用Octave 在Ubuntu上科学处理音频

步骤2:音频信息

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

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

如何使用Octave 在Ubuntu上科学处理音频如何使用Octave 在Ubuntu上科学处理音频

步骤3:读取音频文件

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

>> file='yourfile.ogg'

>> [M, fs] = audioread(file)

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

如何使用Octave 在Ubuntu上科学处理音频如何使用Octave 在Ubuntu上科学处理音频

 

如何使用Octave 在Ubuntu上科学处理音频如何使用Octave 在Ubuntu上科学处理音频

 

如何使用Octave 在Ubuntu上科学处理音频如何使用Octave 在Ubuntu上科学处理音频

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

>> [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' 文件,这个文件中包含余弦信号。

如何使用Octave 在Ubuntu上科学处理音频如何使用Octave 在Ubuntu上科学处理音频

播放这个 '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);

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

免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.linuxprobe.com/

本文转载自:http://www.linuxprobe.com/scientific-audio-processing.html

linuxprobe
粉丝 23
博文 257
码字总数 45072
作品 0
朝阳
私信 提问
使用Octave音频处理(一):对文件进行读写操作

环境准备 首先是安装 octave,在 Ubuntu 终端运行下面的命令添加 Octave PPA,然后安装 Octave 。 sudo apt-add-repository ppa:octave/stablesudo apt-get updatesudo apt-get install oct......

linux小陶
2016/11/13
46
0
Linux下数学(科学)软件简介(一)

装了linux已经有很久了,想着也得用用啊,不然浪费了多不好,以后搞嵌入式的时候还是要用的。很何况linux 就是用C编写的,在哪里编写C/C++那可是很好的,用一个很牛的编译器——GCC。 哈哈!...

wdliming
2011/11/11
1K
0
Ubuntu 屏幕录制噪音处理

最近,在使用 Ubuntu 18.04 做屏幕录制的时候,发现了一个问题:就是屏幕录制过程中,麦克风收音会有很大的背景噪音。但在相同的录音环境中,使用相同的麦克风设备,使用 MacBook 录制也没有...

speculatecat
2018/07/17
0
0
Linux操作系统下推荐的应用程序列表介绍

Linux下推荐应用程序列表 * 媒体播放: 1)divx影片:mplayer 2)rm影片:realplayer10 for linux, mplayer 3)mp3: xmms,beep media player, mplayer 4)ape: xmms+monkey's audio plugin(http:/......

JavaGG
2009/05/08
1K
0
使用Octave音频处理(二):基本数学信号处理

信号叠加 两个信号 S1(t)和 S2(t)相加形成一个新的信号 R(t),这个信号在任何瞬间的值等于构成它的两个信号在那个时刻的值之和。就像下面这样: R(t) = S1(t) + S2(t) 我们将用 Octave 重新产...

linux小陶
2016/11/13
47
0

没有更多内容

加载失败,请刷新页面

加载更多

一起来学Java8(四)——复合Lambda

在一起来学Java8(二)——Lambda表达式中我们学习了Lambda表达式的基本用法,现在来了解下复合Lambda。 Lambda表达式的的书写离不开函数式接口,复合Lambda的意思是在使用Lambda表达式实现函...

猿敲月下码
26分钟前
8
0
debian10使用putty配置交换机console口

前言:Linux的推广普及,需要配合解决实际应用方能有成效! 最近强迫自己用linux进行实际工作,过程很痛苦,还好通过网络一一解决,感谢各位无私网友博客的帮助! 系统:debian10 桌面:xfc...

W_Lu
57分钟前
10
0
aelf Enterprise 0.8.0 beta有奖公测,“Bug奖金计划”重磅开启

2019年9月30日,aelf Enterprise 0.8.0 beta版正式发布。aelf Enterprise 0.8.0 beta是一个完备的区块链系统, 包含完备的区块链系统、开发套件、开发文档、以及配套的基础应用和基础服务。 ...

AELF开发者社区
58分钟前
10
0
oracle 初始化数据库脚本

create user lpf identified by 123456; create tablespace lpf_ts_cms datafile '/opt/app/oracle/product/11.2.0/lpf.dbf' size 200M; alter user lpf default tablespace lpf_ts_cms; sel......

internetafei
今天
8
0
深入了解Redis底层数据结构

说明 说到Redis的数据结构,我们大概会很快想到Redis的5种常见数据结构:字符串(String)、列表(List)、散列(Hash)、集合(Set)、有序集合(Sorted Set),以及他们的特点和运用场景。不过它们是...

TurboSanil
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部