科学音频处理(三):如何使用 Octave 的高级数学技术处理音频文件
创始人
2024-03-01 18:13:42
0

我们的数字音频处理技术第三部分涵盖了信号调制内容,将解释如何进行 调幅 ( Amplitude Modulation ) 、 颤音效果 ( Tremolo Effect ) 和 频率变化 ( Frequency Variation ) 。

调制

调幅

正如它的名字暗示的那样, 影响正弦信号的振幅变化依据传递的信息而不断改变。正弦波因为承载着大量的信息被称作 载波 ( carrier ) 。这种调制技术被用于许多的商业广播和市民信息传输波段(AM)。

为何要使用调幅技术?

调制发射

假设信道是免费资源,有天线就可以发射和接收信号。这要求有效的电磁信号发射天线,它的大小和要被发射的信号的波长应该是同一数量级。很多信号,包括音频成分,通常在 100 赫兹或更低。对于这些信号,如果直接发射,我们就需要建立长达 300 公里的天线。如果通过信号调制将信息加载到 100MHz 的高频载波中,那么天线仅仅需要 1 米(横向长度)。

集中调制与多通道

假设多个信号占用一个通道,调制可以将不同的信号不同频域位置,以便接收者选择该特定信号。使用集中调制(“复用”)的应用有遥感探测数据、立体声调频收音机和长途电话等。

克服设备限制的调制

信号处理设备,比如过滤器、放大器,以及可以用它们简单组成的设备,它们的性能依赖于信号在频域中的境况以及高频率和低频信号的关系。调制可以用于传递信号到频域中的更容易满足设计需求的位置。调制也可以将“宽带信号“(高频和低频的比例很大的信号)转换成”窄带“信号。

音频特效

许多音频特效由于引人注目和处理信号的便捷性使用了调幅技术。我们可以说出很多,比如颤音、合唱、镶边等等。这种实用性就是我们关注它的原因。

颤音效果

颤音效果是调幅最简单的应用,为实现这样的效果,我们会用周期信号改变(乘)音频信号,使用正弦或其他。

>> tremolo='tremolo.ogg';
>> fs=44100;
>> t=0:1/fs:10;
>> wo=2*pi*440*t;
>> wa=2*pi*1.2*t;
>> audiowrite(tremolo, cos(wa).*cos(wo),fs);

Tremolo

这将创造一个正弦形状的信号,它的效果就像‘颤音’。

Tremolo Shape

在真实音频文件中的颤音

现在我们将展示真实世界中的颤音效果。首先,我们使用之前记录过男性发声 ‘A’ 的音频文件。这个信号图就像下面这样:

>> [y,fs]=audioread('A.ogg');
>> plot(y);

Vocal

现在我们将创建一个完整的正弦信号,使用如下的参数:

  • 增幅 = 1
  • 频率= 1.5Hz
  • 相位 = 0
>> t=0:1/fs:4.99999999;
>> t=t(:);
>> w=2*pi*1.5*t;
>> q=cos(w);
>> plot(q);

注意: 当我们创建一组时间值时,默认情况下,它是以列的格式呈现,如, 1x220500 的值。为了乘以这样的值,必须将其变成行的形式(220500x1)。这就是 t=t(:) 命令的作用。

Sinusodial

我们将创建第二份 ogg 音频格式的文件,它包含了如下的调制信号:

>> tremolo='tremolo.ogg';
>> audiowrite(tremolo, q.*y,fs);

Tremolo Signal

频率变化

我们可以改变频率实现一些有趣的音效,比如原音变形,电影音效,多人比赛。

正弦频率调制的影响

这是正弦调制频率变化的演示代码,根据方程:

Y=Ac*Cos(wo*Cos(wo/k))

这里:

  • Ac = 增幅
  • wo = 基频
  • k = 标量除数
>> fm='fm.ogg';
>> fs=44100;
>> t=0:1/fs:10;
>> w=2*pi*442*t;
>> audiowrite(fm, cos(cos(w/1500).*w), fs);
>> [y,fs]=audioread('fm.ogg');
>> figure (); plot (y);

信号图:

你可以使用几乎任何类型的周期函数频率调制。本例中,我们仅仅用了一个正弦函数。请大胆的改变函数频率,用复合函数,甚至改变函数的类型。


via: https://www.howtoforge.com/tutorial/ubuntu-octave-audio-processing-part-3/

作者:David Duarte 译者:theArcticOcean 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

Meta 公布 Reels...
IT之家 8 月 24 日消息,Meta 现已正式公布一项 Ree...
2025-08-24 15:46:19
AI又整活儿!千字长文秒变...
播客新玩法这样把文章“聊活” 作者/ IT时报记者 潘少颖 编辑/...
2025-07-04 21:42:49
里通义开源音频生成模型,能...
7月1日消息,阿里通义实验室开源了旗下首个音频生成模型ThinkS...
2025-07-02 06:12:54
音画同步,AI视频也能有完...
机器之心报道 编辑:泽南 AI 生成的「最后一道关卡」已经突破...
2025-06-27 22:12:41
Google 这款免费 A...
在不久前结束的 Google I/O 上,Google 悄咪咪地在...
2025-06-16 07:41:52
开源播客生成MoonCas...
Zeqian Ju 投稿 量子位 | 公众号 QbitAI 仅听几...
2025-06-04 16:11:44

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
从 Yum 更新中排除特定/某... 作为系统更新的一部分,你也许需要在基于 Red Hat 系统中由于应用依赖排除一些软件包。如果是,如...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...
如何检查你的 Linux 系统... 不知道在使用哪个初始化系统?以下是方法。每个主流 Linux 发行版(包括 Ubuntu、Fedor...