机器学习(七)音频可视化第一篇

读取音频文件并将该信号进行可视化展现

实验内容

读取音频文件并将该信号进行可视化展现。

原理

(1) 音频信号的基本结构,即音频信号的数字化形式是复杂的连续波形。
(2) 为了将其保存成数字化形式,需要对音频信号进行采样并将其转换成数字。在进行采样时,语音语音通常以44100 Hz的频率进行采样,这也意味着每秒钟信号被分解成44,100份,然后这些抽样值被保存。
(3) 如果采样率很高, 用媒体播放器收听音频时,会感觉到信号是连续的。

实验过程

详细步骤:

(1) 创建一个Python文件,并导入以下程序包:
在这里插入图片描述
(2) 使用wavfile包从input_read.wav中读取音频文件:
在这里插入图片描述
(3) 打印这个信号的相关参数:
在这里插入图片描述
(4) 音频信号被存储在一个16位有符号整型数据中,并标准化:
在这里插入图片描述
(5) 提取前30个值,并将其画出:

在这里插入图片描述
(6) X轴为时间轴。创建这个轴,并且X轴应该按照采样频率因子进行缩放:

在这里插入图片描述
(7) 将单位转换为秒:

在这里插入图片描述
(8)将其画出:
在这里插入图片描述

实验结果

在这里插入图片描述
在这里插入图片描述

实验结论

1.一段完整的音频在数字化之后,会变成一条类似于三角函数的变换图形。由图可知,随着时间的推移,一段音频在不同时间点的幅值是不同的,并且随着音频复杂性的提高,幅值变化的次数会越来越快,同时,图像会变得十分复杂。
2.本例中只是提取了前30个值进行画图,如果提取前50,图像的复杂程度又会升高,可见图像的复杂程度与提取值得个数成正比
3.如果采样率很高,用媒体播放器收听音频时,会感觉信号是连续的

源代码

# -*- coding: utf-8 -*-
"""
Created on Sun Sep 20 10:41:01 2020

@author: h'p
"""

import numpy as np
import matplotlib.pyplot as plt 
from scipy.io import wavfile

# 读取输入文件
sampling_freq, audio = wavfile.read(r"C:\Users\h'p\Desktop\speaker_test_sound.wav")
#r"C:\Users\h'p\Desktop\complete.wav"


# 打印参数
print('\nShape:', audio.shape)
print('Datatype:', audio.dtype)
print('Duration:', round(audio.shape[0] / float(sampling_freq), 3), 'seconds')

# 标准化数值
audio = audio / (2.**15)

# 提取前30个值画图
audio = audio[:50]
print(audio)

# 建立时间轴
x_values = np.arange(0, len(audio), 1) / float(sampling_freq)

# 将单位转换为秒
x_values *= 1000

# 画出声音信号图形
plt.plot(x_values, audio, color='black')
plt.xlabel('Time (ms)')
plt.ylabel('Amplitude') 
plt.title('Audio signal') 
plt.show()


程序中用到的音频文件可以选择任意一个,但最好不要太长,否则一般的笔记本会卡住,这一点尤为重要!!!!!!

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨陌潇潇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值