音频信号分析

目录

一,音频获取

二,信号的基本形态

三,衰减信号的频域信号

四,低频信号

五,高频信号

六,七个音节的频率


一,音频获取

我用电子琴(音色模式是卧式钢琴),把中音区的7个音节分别按了5次,录音得到音频文件

首先查看振幅:

from pydub import AudioSegment
import matplotlib.pyplot as plt
from pydub import AudioSegment
import numpy as npaudio = AudioSegment.from_file("D:/1234567.m4a")
audio.export("D:/1234567_.mp3", format="mp3")
arr=audio.get_array_of_samples()
plt.plot(arr)
plt.show()

规律很明显,每一个峰值就是一个音节。

9秒的音频有90万个采样点,大概1秒采样10万次,考虑实际情况,应该是96000次。

二,信号的基本形态

第一个音节5次:

v=arr[75000:205000]
plt.plot(v)
plt.show()

第一个音节第1次:

v=arr[80000:106000]
plt.plot(v)
plt.show()

第二次:

第三次:

第四次:

第五次:

每个音节都是一个衰减的趋势,而且每个键的衰减周期是差不多的。

三,衰减信号的频域信号

衰减信号示例:

num = 100
x = linspace(0,num-1,num)
f =  cos(pi*x) * cos(pi*x/200)
plot(x, f)
show()

频域实部:

频域虚部:

可以看出,即使有衰减,频域信号也能非常清晰的看出信号频率。

四,低频信号

一个衰减周期内有很多震动周期,所以我们先局部放大:


plt.plot(arr[131000:132000])
plt.show()

可以看出来主频信号大概是每400个采样点是一个周期,即250HZ

再对整个音节的信号做一个傅里叶变换:


H = np.fft.fft(v)
plt.plot(H.real)
plt.show()plt.plot(H.imag)
plt.show()

实部:

虚部:

如果周期大概是400个采样点,那么信号对应的频点应该是在60左右。

低频信号放大:

r = H.real
plt.plot(r[0:2000])
plt.show()

再放大,并统计频点:

r2 = r[0:750]
plt.plot(r2)
plt.show()print("96000/len=",end='')
print(96000.0 / len(r))
for id in range(0,len(r2)):if(abs(r2[id])>6000000):print(id)

输出:

96000/len=3.6923076923076925
70
71
141
142
284
354
355
426

所以第一个频点应该是71

对应的频率是3.6923076923076925 * 71 = 262.2赫兹

对于第一个音节后面出现的几次,按照类似的方式计算,算出的结果分别是:262.4 262.4 262.1 262.0

所以,这个方法应该没错,单个音节5次的频率是一样的。

五,高频信号

用实部继续分析高频信号:

r = H.real
plt.plot(r[10000:13000])
plt.show()

这是一个对称的图形,我们再把局部放大:

r = H.real
plt.plot(r[11000:11500])
plt.show()

我们把几个频点提取出来:

r2 = r[11000:11500]
print(r2)
for id in range(0,len(r2)):if(abs(r2[id])>4000000):print(id)

输出:

186
249
312
313
314
373
374
375
376
436
438

其中 186 249 312 375 438这几个频点刚好构成等差数列,差值是63

加上偏移量,分别是11186 11249 11312 11375 11438

按照同样的方法:

对应的频点分别是10700 10760 10820 10880 10940

也是刚好等差数列,但是差值是60

同样的方法:

对应的频点分别是9672 9727 9782 9837 9892 9946

如果最后一个频点加上1,那就刚好构成等差数列,差值是55

汇总一下:

第一个音节的其中三次信号的高频信号:

11186 11249 11312 11375 11438 差值63

10700 10760 10820 10880 10940 差值60

9672 9727 9782 9837 9892 9947 差值55

第二个音节,按照同样的方法分析:

10179 10243 10307 10371 10435 差值64

所以这些频点到底代表啥?等差数列又代表啥?

我也不清楚。

六,七个音节的频率

前面已经算出来,第一个音节频率是262赫兹。

按照同样的方法,分别可以算出其他音节的频率。

第二个:

294赫兹

第三个:

329赫兹

第四个:

350赫兹

第五个:

393赫兹

第六个:

439赫兹

第七个:

493赫兹

所以相邻的7个音节,分别是262 294 329 350 393 439 493赫兹

显然,和钢琴的十二平均律对比,误差在1赫兹之内。

另外,我这里的第6个音,即中音区A,其实应该是国际标准音440赫兹,误差是1赫兹。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/34431.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue-Cli 创建vue2.0 + TypeScript 项目

这里写目录标题 一、创建项目名称二、选择 Manually select features三、勾选配置项四、选择vue版本五、其它配置 一、创建项目名称 vue create 项目名称(项目名字不能含义大写字母)二、选择 Manually select features (按箭头上下进行移动…

Windows系统Maven下载安装

下载: 官网地址:https://maven.apache.org/download.cgi 安装: 下载下来的是一个压缩包,首先将其解压到你的Maven目标安装位置 接下来为其配置其环境变量 (Maven的基础是Java,因此要首先确认已为你的电…

钡铼技术BL101串口6路Modbus转MQTT网关加速智慧城市部署

随着物联网技术的飞速发展,如何高效地整合传统设备与现代云端系统,成为了亟待解决的关键问题。钡铼技术,作为物联网领域的硬件设备制造商,近期推出的BL101六路串口Modbus转MQTT网关,正以其独特优势,为智慧城…

【漏洞复现】脸爱云一脸通智慧管理平台 SystemMng 管理用户信息泄露漏洞(XVE-2024-9382)

0x01 产品简介 脸爱云一脸通智慧管理平台是一套功能强大,运行稳定,操作简单方便,用户界面美观,轻松统计数据的一脸通系统。无需安装,只需在后台配置即可在浏览器登录。 功能包括:系统管理中心、人员信息管理中心、设备…

在WordPress上添加亚马逊联盟链接的三种方法

在互联网快速发展的今天,很多人都希望通过网络来增加收入,而加入亚马逊联盟计划(Amazon Associates)无疑是一个不错的选择。如果你有一个WordPress网站,那么在文章中添加亚马逊联盟链接是个很好的变现方式。今天&#…

倩女幽魂搬砖攻略:2024搬砖攻略大全!云手机强力辅助!

《倩女幽魂》手游是一款具有极高自由度和丰富玩法的角色扮演游戏。为了帮助玩家更好地了解并掌握游戏中的各种技巧和策略,本文将为大家提供详细的攻略指南。我们将从每日签到、任务升级、银两经营、必做活动和出金等多个方面详细介绍,帮助玩家轻松玩转游…

#C++ -STL容器之vector(浓缩版)#

vector容器是C标准库中的一个动态数组容器。 它允许你在运行时动态地添加或删除元素。它提供了随机访问的能力,这意味着你可以像访问数组一样直接通过索引访问元素,同时又具有动态大小的优势。 vector的功能与C语言中的数组十分相似,但是功…

MyBatis-Plus 查询不到数据,但使用 SQL 可以查询到数据的问题排查

目录 前言 一、问题描述 示例代码 二、排查步骤 1. 检查数据源配置 2. 检查实体类与数据库表结构 3. 检查 Mapper 接口 4. 检查 MyBatis-Plus 配置 5. 排查查询条件 6. 检查日志输出 7. 检查数据库连接问题 8. 检查全局配置和插件 三、解决方案 前言 在开发过程中&…

百度Agent初体验(制作步骤+感想)

现在AI Agent很火,最近注册了一个百度Agent体验了一下,并做了个小实验,拿它和零一万物(Yi Large)和文心一言(ERNIE-4.0-8K-latest)阅读了相同的一篇网页资讯,输出资讯摘要&#xff0…

[职场] 线上面试的准备工作 #知识分享#经验分享#媒体

线上面试的准备工作 面对求职中的面试,应届毕业生该做些什么准备呢?在这里,向各位分享面试前做好预案不慌张几点准备。现在许多面试是通过线上形式进行的。对于求职者来说,要做好两手准备。在这里,重点与大家分享线上面…

el-dialog el-select适配移动端

一、el-dialog 2024.06.20今天我学习了如何对el-dialog弹窗适配移动端展示,效果如下: 代码如下: media screen and (min-width: 220px) and (max-width: 600px) {::v-deep .el-dialog {width: 95% !important;} } 二、el-select 代码如下…

盘立方期货Kdj幅图指标公式源码

盘立方期货Kdj幅图指标公式源码&#xff1a; N:250; WR1:100-100*(HHV(HIGH,N)-CLOSE)/(HHV(HIGH,N)-LLV(LOW,N)),DOT,COLORLIGHTGREEN; EW:EMA(WR1,5); STICKLINE(WR1<20,WR1,20,1,0),COLORYELLOW; STICKLINE(WR1>80,WR1,80,1,0),COLORYELLOW; RSV:(CLOSE-LLV(LOW…

IDEA中如何使用Git及其在实际工作中如何进行开发(入职版,详细大量图演示)

1.你把代码拉一下 新入职一般都是拉取公司的代码&#xff0c;一般都是领导给你一个项目的git地址 一般是gitee(Gitee - 基于 Git 的代码托管和研发协作平台) 或者是云效(阿里云登录 - 欢迎登录阿里云&#xff0c;安全稳定的云计算服务平台) https://gitee.com/xxx/xxx.git /…

Linux 字符型设备 + platform总线 + sysfs设备模型

1 概述 第一部分先简单介绍下字符型设备 platform总线 sysfs设备模型的关系。 1.1 . 字符设备驱动 Linux设备驱动分三种&#xff0c;包括字符设备驱动、块设备驱动和网络设备驱动。字符设备只能按字节流先后顺序访问设备内存&#xff0c;不能随机访问。鼠标、触摸屏、LCD等…

Crypto++ 入门

一、简介 Crypto&#xff08;也称为CryptoPP、libcrypto或cryptlib&#xff09;是一个免费的开源C库&#xff0c;提供了多种加密方案。它由Wei Dai开发和维护&#xff0c;广泛应用于需要强大加密安全的各种应用程序中。该库提供了广泛的加密算法和协议的实现&#xff0c;包括&…

Spring循环依赖问题——从源码画流程图

文章目录 关键代码相关知识为什么要使用二级缓存为什么要使用三级缓存只使用两个缓存的问题不能解决构造器循环依赖为什么多例bean不能解决循环依赖问题初始化后代理对象赋值给原始对象解决循环依赖SpringBoot开启循环依赖 循环依赖 在线流程图 关键代码 从缓存中查询getSingl…

【贪心算法初级训练】在花坛上是否能种下n朵花、碰撞后剩余的行星

1、在花坛上是否能种下n多花 一个很长的花坛&#xff0c;一部分地已经种植了花&#xff0c;另一部分却没有&#xff0c;花不能种植在相邻的地块上否则它们会争夺水源&#xff0c;两者都会死去。给你一个整数数组表示花坛&#xff0c;由若干个0和1组成&#xff0c;0表示没种植花…

51单片机STC89C52RC——7.1 串口通信

目的/效果 实现单片机串口与电脑串口工具进行数据通讯&#xff0c; 1&#xff1a;设备向电脑串口发送HEX 2&#xff1a;让电脑串口工具控制单片机LED亮灭。同时让单片机反馈控制的结果。 一&#xff0c;STC单片机模块 二&#xff0c;串口通讯 2.1 串行通信与并行通信 &…

axios全局封装AbortController取消重复请求

为什么&#xff1f; 问题&#xff1a;为什么axios要配置AbortController&#xff1f;防抖节流不行吗&#xff1f; 分析&#xff1a; 防抖节流本质上是用延时器来操作请求的。防抖是判断延时器是否存在&#xff0c;如果存在&#xff0c;清除延时器&#xff0c;重新开启一个延…

win10改远程桌面端口,Windows 10 修改远程桌面端口号的专业指南

在Windows 10系统中&#xff0c;远程桌面&#xff08;Remote Desktop&#xff09;功能允许用户从一台计算机远程访问和控制另一台计算机。为了增加远程连接的安全性&#xff0c;减少潜在的安全风险&#xff0c;修改默认的远程桌面端口号是一个常见的安全措施。以下是在Windows …