数字信号处理-1-关于声音与波

1 声音是一种纵波

声音是通过改变对空气的压力,以波的形式传播的,这个压力的变化叫做声压。具体来说就是,声音利用空气的振动,使空气的密度变高变低来传播。这种传播方向与振动方向相同的波叫做纵波,所以声波是一种纵波
纵波图形
具有纵波性质的波,需要传递密度的变化,因此需要传递媒介,纵波不能在真空中传播。媒介不止有像空气之类的气体,像水这种液体、金属之类的固体都可以作为媒介传递纵波。

纵波因为在传播方向上能使媒介的密度变高变低,因为也叫疏密波,用密度的变化把疏密波图形化,就能得到类似三角函数的波形,波峰表示介质被压缩变密,波谷表示介质密度变得稀疏。
在这里插入图片描述

2 振幅与频率

振幅是信号的高低差,波形中相邻的一个波峰和波谷的时间长度叫周期,频率是一秒内振动的次数,在波形中也就是一秒内有多少个周期。如下图,1 秒内有两个周期, 每个周期为 0.5 秒,频率就为 2 Hz,也即频率是周期的倒数
在这里插入图片描述

振幅对应着声音的强度,也就是说,振幅小的话,相应的人说话的音量也很小。

频率对应着声音的音调,增大频率,会提高声音的音调,使声音变成高音。

3 Python 生成声音

# jupyter noteboook 中运行
# 导入需要的包
import numpy as np
import math
try:
    from IPython.display import Audio
except:
    warnings.warn(
        "Can't import Audio from IPython.display"
    )

# 常数值 2π
PI2 = math.pi * 2
# 时长,单位秒
duration = 1
# 采样率:每分钟采样次数
framerate = 22050
# 样本数:共采 duration * framerate 个样本,整数
n = round(duration * framerate)
# 每个采样点对应时间
ts = np.arange(n) / framerate

def evaluate(ts, amp, freq):
        """Evaluates the signal at the given times.
        ts: float array of times
        amp:振幅
        freq:频率
        returns: audio
        """
        ts = np.asarray(ts)
        phases = PI2 * freq * ts
        ys = amp * np.sin(phases)
        # 返回播放器
        audio = Audio(data=ys, rate=framerate)
        return audio
        
# 可以尝试更改 振幅和频率
amp = 1
freq = 440
evaluate(ts, amp, freq)

参考

漫画傅里叶解析
Python数字信号处理应用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值