科学音频处理,第二部分 - 如何使用带有 Octave 4.0 的 Ubuntu 对音频文件进行基本的数学信号处理科学音频处理,第二部分 - 如何使用带有 Octave 4.0 的 Ubuntu 对音频文件进行基本的数学信号处理科学音频处理,第二部分 - 如何使用带有 Octave 4.0 的 Ubuntu 对音频文件进行基本的数学信号处理科学音频处理,第二部分 - 如何使用带有 Octave 4.0 的 Ubuntu 对音频文件进行基本的数学信号处理
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

科学音频处理,第二部分 - 如何使用带有 Octave 4.0 的 Ubuntu 对音频文件进行基本的数学信号处理

在此页

  1. 添加信号
    1. 第 1 步:创建两个不同频率的信号(ogg 文件)
    2. 第 2 步:添加两个信号
    3. 第 3 步:添加两个真实信号(以两个音乐曲目为例)

    1. 生成的产品信号图
    2. 将基频差较大的两个信号相乘的图形效果(调制原理)

    在之前的教程中,我们看到了读取、写入和播放音频文件的简单步骤。我们甚至看到了如何从余弦函数等周期函数合成音频文件。在本教程中,我们将了解如何对信号进行加法、乘法(调制)以及应用一些基本数学函数来查看它们对原始信号的影响。

    添加信号

    两个信号 S1(t) 和 S2(t) 的总和产生信号 R(t),其在任何时刻的值都是该时刻相加信号值的总和。像这样:

    R(t)=S1(t) + S2(t)

    我们将在 Octave 中重新创建两个信号的总和,并以图形方式查看效果。首先,我们将生成两个不同频率的信号,以查看总和产生的信号。

    第 1 步:创建两个不同频率的信号(ogg 文件)

    >> sig1='cos440.ogg';                  %creating the audio file @440 Hz
    >> sig2='cos880.ogg';                  %creating the audio file @880 Hz
    >> fs=44100;                           %generating the parameters values (Period, sampling frequency and angular frequency)
    >> t=0:1/fs:0.02;
    >> w1=2*pi*440*t;
    >> w2=2*pi*880*t;
    >> audiowrite(sig1,cos(w1),fs);        %writing the function cos(w) on the files created
    >> audiowrite(sig2,cos(w2),fs);


    这里我们将绘制两个信号。

    信号图 1 (440 Hz)

    >> [y1, fs] = audioread(sig1);
    >> plot(y1)

    信号图 2 (880 Hz)

    >> [y2, fs] = audioread(sig2);
    >> plot(y2)

    第 2 步:添加两个信号

    现在我们执行上一步中创建的两个信号的总和。

    >> sumres=y1+y2;
    >> plot(sumres)

    结果信号图

    八度效应

    在 Octaver 中,这种效果提供的声音是有特点的,因为它模拟了音乐家正在演奏的音符,无论是在较低的还是较高的八度音程中(根据它的编程),加上原始音符的声音,即出现两个音符听起来一样。

    第 3 步:添加两个真实信号(以两个音乐曲目为例)

    为此,我们将使用两首格里高利圣歌(语音采样)。

    艾维玛利亚赛道

    首先,将阅读并绘制 Avemaria 曲目:

    >> [y1,fs]=audioread('avemaria_.ogg');
    >> plot(y1)

    赞美诗曲目

    现在,将阅读并绘制一首赞美诗曲目

    >> [y2,fs]=audioread('hymnus.ogg');
    >> plot(y2)

    Avemaria + Hymnus 曲目

    >> y='avehymnus.ogg';
    >> audiowrite(y, y1+y2, fs);
    >> [y, fs]=audioread('avehymnus.ogg');
    >> plot(y)

    两个信号的乘积


    要将两个信号相乘,我们必须使用类似求和的方法。让我们使用之前创建的相同文件。

    >> sig1='cos440.ogg';                  %creating the audio file @440 Hz
    >> sig2='cos880.ogg';                  %creating the audio file @880 Hz
    >> product='prod.ogg';                 %creating the audio file for product
    >> fs=44100;                           %generating the parameters values (Period, sampling frequency and angular frequency)
    >> t=0:1/fs:0.02;
    >> w1=2*pi*440*t;
    >> w2=2*pi*880*t;
    >> audiowrite(sig1, cos(w1), fs);      %writing the function cos(w) on the files created
    >> audiowrite(sig2, cos(w2), fs);
    >> [y1,fs]=audioread(sig1);
    >> [y2,fs]=audioread(sig2);
    >> audiowrite(product, y1.*y2, fs);    %performing the product
    >> [yprod,fs]=audioread(product);
    >> plot(yprod);                        %plotting the product


    注意:我们必须使用操作数 .* 因为此产品是在参数文件上按值对值制作的。更多内容请参考Octave矩阵产品操作手册。

    产生的产品信号图

    基频相差较大的两个信号相乘的图形效果(调制原理)

    第1步:

    创建频率为 220Hz 的音频信号。

    >> fs=44100;
    >> t=0:1/fs:0.03;
    >> w=2*pi*220*t;
    >> y1=cos(w);
    >> plot(y1);

    第2步:

    创建 22000 Hz 的更高频率调制信号。

    >> y2=cos(100*w);
    >> plot(y2);

    第 3 步:

    将两个信号相乘并绘制。

    >> plot(y1.*y2);

    将信号乘以标量

    将函数乘以标量的效果相当于修改它们的范围,在某些情况下,还修改相位的符号。给定标量 K,函数 F(t) 与标量的乘积定义为:

    >> [y,fs]=audioread('cos440.ogg');        %creating the work files
    >> res1='coslow.ogg';               
    >> res2='coshigh.ogg';
    >> res3='cosinverted.ogg';
    >> K1=0.2;                                %values of the scalars
    >> K2=0.5;
    >> K3=-1;
    >> audiowrite(res1, K1*y, fs);            %product function-scalar
    >> audiowrite(res2, K2*y, fs);
    >> audiowrite(res3, K3*y, fs);
    >> plot(y)

    振幅降低 0.2 的信号图

    >> plot(res1)

    振幅降低 0.5 的信号图

    >> plot(res2)

    反相信号图

    >> plot(res3)

    结论


    基本的数学运算,例如函数的代数和、乘积和标量的乘积,是更高级运算的基础,其中包括频谱分析、幅度调制、角调制等。在下一个教程中,我们将看到如何进行此类操作及其对音频信号的影响。

©2015-2025 艾丽卡 support@alaica.com