Python中的音频处理和音频分析

Python是一种非常适合进行音频处理和音频分析的语言,因为它有许多强大的库可以使用,如librosanumpyscipymatplotlibpydub等。下面是一些使用这些库进行音频处理和音频分析的简单示例。

首先,你需要安装这些库。你可以使用pip来安装:

 

bash复制代码

pip install numpy scipy librosa matplotlib pydub

音频读取和播放

使用librosa库读取音频文件:

 

python复制代码

import librosa
# 加载音频文件
y, sr = librosa.load('audio_file.wav')
# y是音频时间序列,sr是采样率
print('Sampling rate:', sr)
print('Audio shape:', y.shape)

播放音频(需要安装simpleaudio库):

 

python复制代码

import simpleaudio as sa
import numpy as np
# 生成一个简单的音频信号
duration = 5.0 # seconds
fs = 44100 # Sample rate
t = np.linspace(0, duration, int(duration*fs), False) # 时间向量
freq = 440.0 # 频率,这里为A4
signal = 0.5 * np.sin(2 * np.pi * freq * t) # 音频信号
# 将音频信号转换为字节流
bytes_ = signal.astype(np.float32).tobytes()
# 播放音频
play_obj = sa.play_buffer(bytes_, 1, 2, fs)
# 等待音频播放完毕
play_obj.wait_done()

音频特征提取

使用librosa库提取音频特征,如MFCC(Mel频率倒谱系数):

 

python复制代码

import librosa
# 加载音频文件
y, sr = librosa.load('audio_file.wav')
# 提取MFCC特征
mfccs = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=13)
print(mfccs.shape)

音频分析

使用matplotlib进行音频信号的可视化:

 

python复制代码

import matplotlib.pyplot as plt
import librosa.display
# 加载音频文件
y, sr = librosa.load('audio_file.wav')
# 绘制音频波形图
plt.figure(figsize=(14, 5))
librosa.display.waveplot(y, sr=sr)
plt.title('Audio Waveform')
plt.show()

使用librosa.display.specshow绘制频谱图:

 

python复制代码

import matplotlib.pyplot as plt
import librosa
import librosa.display
# 加载音频文件
y, sr = librosa.load('audio_file.wav')
# 计算STFT并转换为dB单位
D = librosa.amplitude_to_db(np.abs(librosa.stft(y)), ref=np.max)
# 绘制频谱图
plt.figure(figsize=(14, 5))
librosa.display.specshow(D, sr=sr, x_axis='time', y_axis='log')
plt.colorbar(format='%+2.0f dB')
plt.title('Spectrogram')
plt.show()

这些只是Python进行音频处理和音频分析的基础示例。实际上,你可以使用这些库进行更复杂的操作,如音频分割、音频合成、噪声减少、语音识别等。

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

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

相关文章

【代码学习】EAT复现+代码分析

论文:Efficient Emotional Adaptation for Audio-Driven Talking-Head Generation 代码:yuangan/EAT_code: Official code for ICCV 2023 paper: "Efficient Emotional Adaptation for Audio-Driven Talking-Head Generation". (github.com) …

开源爬虫技术在金融行业市场分析中的应用与实战解析

一、项目介绍 在当今信息技术飞速发展的时代,数据已成为企业最宝贵的资产之一。特别是在${industry}领域,海量数据的获取和分析对于企业洞察市场趋势、优化产品和服务至关重要。在这样的背景下,爬虫技术应运而生,它能够高效地从互…

企业级数字人形象自定义解决方案

在品牌传播、线上营销等领域,一个独特且符合企业形象的数字人形象,无疑能为企业带来更强的品牌识别度和市场竞争力。美摄科技,作为业界领先的数字人形象解决方案提供商,凭借多年的技术积累和深厚的行业经验,推出了一套…

UnityAPI的学习——Matrix4x4类

在脚本中通常用Vector3、Quaternion、Transform等类的属性和方法来对物体进行交换,Matrix4x4类通常用在一些比较特殊的地方,如对摄像机的非标准投影变换。 Matrix4x4类实例方法 在Matrix4x4类中,涉及的实例方法有MultiplyPoint方法、Multip…

单机Kubenetes集群——KinD安装

文章目录 前言一、Linux安装二、安装docker三、创建单节点集群四、kubectl安装总结 前言 KinD:单机测试K8s集群 源码:https://github.com/kubernetes-sigs/kind 官方文档:https://kind.sigs.k8s.io/docs/user/quick-start/ 一、Linux安装 (…

Linux第68步_旧字符设备驱动的一般模板

file_operations结构体中的函数就是我们要实现的具体操作函数。 注意: register_chrdev()和 unregister_chrdev()这两个函数是老版本驱动使用的。现在新字符设备驱动已经不再使用这两个函数,而是使用Linux内核推荐的新字符设备驱动API函数。 1、创建C…

公众号公司主体变更如何操作?

公众号迁移有什么用?只能改主体吗?好多朋友都想做公众号迁移,但是又不太清楚具体有啥用,今天我就来详细说说。首先,公众号迁移最重要的作用就是可以修改主体。比如你的公众号原来是 A 公司的,现在 A 公司不…

Linux 系统上卸载 Docker

停止 Docker 服务: sudo systemctl stop docker卸载 Docker 程序包: 不同的 Linux 发行版有不同的包管理工具,以下是一些常见的发行版的卸载命令: 对于使用 apt 的系统(如 Ubuntu、Debian):sudo…

SpringCloud(20)之Skywalking Agent原理剖析

一、Agent原理剖析 使用Skywalking的时候,并没有修改程序中任何一行 Java 代码,这里便使用到了 Java Agent 技术,我 们接下来展开对Java Agent 技术的学习。 1.1 Java Agent Java Agent 是从 JDK1.5 开始引入的,算是一个比较老的…

Ruby CanCanCan 动态定义方法

灵感来自这里https://github.com/kristianmandrup/cantango/wiki/CanCan-vs-CanTango 如果权限不多,我们可以通过这种方式来定义 class CanCan::Abilitydef initialize user, options = {}if !usercan :read, :allendif useradmin_rules if user.roles.include? :adminedit…

STL中push_back和emplace_back效率的对比

文章目录 过程对比1.通过构造参数向vector中插入对象(emplace_back更高效)2.通过插入实例对象(调用copy函数)3.通过插入临时对象(调用move函数) 效率对比emplace_back 的缺点 我们以STL中的vector容器为例。…

解决 Pandas 导出文件出现 dtype: object 字样

文章目录 1. 问题2. 解决方法 1. 问题 python 用 pandas 输出 excel 文件时,发现有些列的单元格出现 “dtype: object” 的字样,如下图: 这是 pandas 没有处理好导致的 2. 解决方法 结果用 .values 进行输出,这样就转成字符串…

Vue的Diff详解

在 Vue 中,当我们更新数据时,Vue 会自动更新视图,这个过程就是虚拟 DOM 的 diff 算法。虚拟 DOM 是一种以 JavaScript 对象的形式表示 DOM 节点的方式,它可以更快地计算出需要更新的节点,从而提高渲染效率。 接下来&a…

聊天室项目

服务器 #include <myhead.h> #define SER_IP "192.168.122.39" #define SER_PORT 8888 typedef struct Node //链表存储客户端的所有信息 {struct sockaddr_in cin; //存储客户端的网络地址信息struct Node *next; }*List; typedef struct Message//消息结构…

洛谷 P1731 [NOI1999] 生日蛋糕

题目 题目链接 自己没看题解写的&#xff0c;摸石头过河&#xff0c;解释一下 首先&#xff0c;输入输出都是正整数。先搞定输入&#xff0c;再判断条件&#xff0c;如果无解&#xff0c;输出0&#xff0c;否则输出蛋糕外表面面积Q&#xff08;这里用全局变量&#xff0c;开l…

数据库的分类和特点介绍

#基础概念# #入门 数据库的主要分类 关系型数据库&#xff08;RDBMS&#xff09; 数据以表格形式存储&#xff0c;通过预定义的关系模型建立数据间的连接&#xff0c;使用SQL作为查询语言。常见的例子包括MySQL、Oracle、SQL Server、PostgreSQL、IBM DB2等。 非关系型数据库…

SEDEX验厂审核重点

SEDEX验厂简介 在全球化的今天&#xff0c;供应链的透明性和可持续性越来越受到人们的关注。为了确保供应链的合规性和可持续性&#xff0c;许多企业开始采用SEDEX验厂这一方法。SEDEX验厂是一种基于国际劳工组织&#xff08;ILO&#xff09;核心劳工标准的供应链审核体系&…

数据库:2024/3/6

作业1&#xff1a;使用C语言完成数据库的增删改 代码&#xff1a; #include <myhead.h>//定义添加员工信息函数 int Add_worker(sqlite3 *ppDb) {//准备sql语句printf("请输入要添加的员工信息:\n");//从终端获取员工信息char rbuf[128]"";fgets(r…

算法-买卖股票的最佳时机

1、题目来源 121. 买卖股票的最佳时机 - 力扣&#xff08;LeetCode&#xff09; 2、题目描述 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖…