语音识别 语音识别项目相关笔记内容

语音识别 语音识别项目相关笔记内容

  • 语音识别应用范畴
  • 语音识别框架
  • 语音基本操作
    • 使用scipy.io.wavfile读取wav音频文件获取采样率、长度、通道数
    • 使用numpy读取pcm格式音频文件
    • 读取wav音频文件,并绘制图像
    • 读取双声道的wav音频文件,分别绘制不同声道的波形图
    • 读取一个采样率为16k的音频,分别绘制出其时域与频域的图
  • 音频特征相关内容
  • RNN相关内容
  • 卷积模块
  • 语音识别小项目(音频事件检测)
    • 项目相关描述
    • 项目结构
    • 数据集
    • 音频数据校验
    • 配置文件
    • 音频特征抽取
    • 模型结构设计
    • 超参数
    • 训练
  • 语音特征提取——动态时间规整(Dynamic Time Warping,简称 DTW)

语音识别应用范畴

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

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

语音识别框架

在这里插入图片描述

语音基本操作

在这里插入图片描述

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

使用scipy.io.wavfile读取wav音频文件获取采样率、长度、通道数

import scipy.io.wavfile as wavfile# 读取 WAV 文件
file_path = 'path_to_your_audio_file.wav'
sampling_rate, data = wavfile.read(file_path)# 获取采样率
print(f'Sampling Rate: {sampling_rate} Hz')# 获取音频长度
# 音频长度 = 样本数 / 采样率
audio_length = data.shape[0] / sampling_rate
print(f'Audio Length: {audio_length:.2f} seconds')# 获取通道数
# 如果音频是单声道,data.shape 将返回 (样本数,)
# 如果音频是多声道,data.shape 将返回 (样本数, 通道数)
if len(data.shape) == 1:channels = 1
else:channels = data.shape[1]print(f'Number of Channels: {channels}')

使用numpy读取pcm格式音频文件

在这里插入图片描述

import numpy as np# 定义PCM文件的路径
pcm_file_path = 'path/to/your/audio.pcm'# 定义采样率和采样深度
sample_rate = 44100  # 例如,44.1 kHz
sample_depth = 16    # 例如,16-bit PCM# 读取PCM文件
def read_pcm(file_path, sample_rate, sample_depth):# 根据采样深度设置数据类型if sample_depth == 16:dtype = np.int16elif sample_depth == 32:dtype = np.int32else:raise ValueError("Unsupported sample depth: {}".format(sample_depth))# 读取二进制PCM数据并转换为NumPy数组pcm_data = np.fromfile(file_path, dtype=dtype)# 返回音频数据和采样率return pcm_data, sample_rate# 读取PCM文件数据
audio_data, sr = read_pcm(pcm_file_path, sample_rate, sample_depth)# 打印音频数据和采样率
print("Sample Rate: {} Hz".format(sr))
print("Audio Data: ", audio_data)

在这里插入图片描述

读取wav音频文件,并绘制图像

import numpy as np
import matplotlib.pyplot as plt
from scipy.io import wavfile# 读取 WAV 文件
sample_rate, audio_data = wavfile.read('your_audio_file.wav')# 如果音频是立体声,将其转换为单声道
if audio_data.ndim > 1:audio_data = audio_data.mean(axis=1)# 创建时间轴
time_axis = np.linspace(0, len(audio_data) / sample_rate, num=len(audio_data))# 绘制音频波形
plt.figure(figsize=(15, 5))
plt.plot(time_axis, audio_data, label='Audio waveform')
plt.xlabel('Time [s]')
plt.ylabel('Amplitude')
plt.title('Waveform of the audio file')
plt.legend()
plt.show()

读取双声道的wav音频文件,分别绘制不同声道的波形图

import numpy as np
import matplotlib.pyplot as plt
from scipy.io import wavfile# 读取 WAV 文件
sample_rate, audio_data = wavfile.read('your_stereo_audio_file.wav')# 检查是否为双声道音频
if audio_data.ndim != 2 or audio_data.shape[1] != 2:raise ValueError("音频文件不是双声道文件")# 分离左右声道
left_channel = audio_data[:, 0]
right_channel = audio_data[:, 1]# 创建时间轴
time_axis = np.linspace(0, len(left_channel) / sample_rate, num=len(left_channel))# 绘制左声道波形
plt.figure(figsize=(15, 5))
plt.subplot(2, 1, 1)
plt.plot(time_axis, left_channel, label='Left Channel', color='blue')
plt.xlabel('Time [s]')
plt.ylabel('Amplitude')
plt.title('Left Channel Waveform')
plt.legend()# 绘制右声道波形
plt.subplot(2, 1, 2)
plt.plot(time_axis, right_channel, label='Right Channel', color='red')
plt.xlabel('Time [s]')
plt.ylabel('Amplitude')
plt.title('Right Channel Waveform')
plt.legend()# 显示波形图
plt.tight_layout()
plt.show()

读取一个采样率为16k的音频,分别绘制出其时域与频域的图

import numpy as np
import matplotlib.pyplot as plt
from scipy.io import wavfile
from scipy.fftpack import fft# 读取 WAV 文件
sample_rate, audio_data = wavfile.read('your_audio_file.wav')# 检查采样率是否为16k
if sample_rate != 16000:raise ValueError("音频文件的采样率不是16k")# 如果是立体声,取第一个通道
if audio_data.ndim == 2:audio_data = audio_data[:, 0]# 创建时间轴
time_axis = np.linspace(0, len(audio_data) / sample_rate, num=len(audio_data))# 绘制时域图
plt.figure(figsize=(12, 6))
plt.subplot(2, 1, 1)
plt.plot(time_axis, audio_data, label='Time Domain', color='blue')
plt.xlabel('Time [s]')
plt.ylabel('Amplitude')
plt.title('Time Domain Signal')
plt.legend()# 计算音频的 FFT(快速傅里叶变换)
n = len(audio_data)
audio_fft = fft(audio_data)
audio_fft = np.abs(

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

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

相关文章

【k8s故障处理篇】calico-kube-controllers状态为“ImagePullBackOff”解决办法

【k8s故障处理篇】calico-kube-controllers状态为“ImagePullBackOff”解决办法 一、环境介绍1.1 本次环境规划1.2 kubernetes简介1.3 kubernetes特点二、本次实践介绍2.1 本次实践介绍2.2 报错场景三、查看报错日志3.1 查看pod描述信息3.2 查看pod日志四、报错分析五、故障处理…

【Vue】深入了解 v-for 指令:从基础到高级应用的全面指南

文章目录 一、v-for 指令概述二、v-for 指令的基本用法1. 遍历数组2. 遍历对象3. 使用索引 三、v-for 指令的高级用法1. 组件列表渲染2. 使用 key 提升性能3. 嵌套循环 四、结合其他功能的高级用法1. 处理过滤和排序后的结果2. 迭代数值范围3. 结合其他命令使用模板部分 (<t…

基于vue3 + vite产生的 TypeError: Failed to fetch dynamically imported module

具体参考这篇衔接&#xff1a; Vue3报错&#xff1a;Failed to fetch dynamically imported module-CSDN博客 反正挺扯淡的&#xff0c;错误来源于基于ry-vue-plus来进行二次开发的时候遇到的问题。 错误起因 我创建了一个广告管理页面。然后发现访问一直在加载中。报的是这样…

Unity点击生成节点连线

Unity点击生成节点连线 效果 2.主要代码 Test_Line 控制类 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems;public class Test_Line : MonoBehaviour {public GameObject qiu_prefab;public List<Game…

h5点击电话号跳转手机拨号

需要使用到h5的 <a>标签 我们首先在<head>标签中添加代码 <meta name"format-detection" content"telephoneyes"/>然后再想要的位置添加代码 <a href"tel:10086"> 点击拨打&#xff1a;10086 </a> 这样功能就实现…

【Day1415】Bean管理、SpringBoot 原理、总结、Maven 高级

0 SpringBoot 配置优先级 从上到下 虽然 springboot 支持多种格式配置文件&#xff0c;但是在项目开发时&#xff0c;推荐统一使用一种格式的配置 &#xff08;yml是主流&#xff09; 1 Bean管理 1.1 从 IOC 容器中获取 Bean 1.2 Bean 作品域 可以通过注解 Scope("proto…

深入浅出WebRTC—ALR

ALR&#xff08;Application Limited Region&#xff09;指的是网络传输过程中&#xff0c;由于应用层的限制&#xff08;而非网络拥塞&#xff09;导致带宽未被充分利用的情况。在这种情况下&#xff0c;应用层可能因为处理能力、手动配置或其他因素无法充分利用可用带宽&…

Mybatis配置代码解读(事务管理与连接池)

目录 配置代码解读 事务管理方式 数据库连接池 测试代码解读 SqlSessionFactory SqlSession 接口的代理对象 ▐ 前言 在上一篇文章 手把手教你搭建Mybatis框架-CSDN博客 中分享了如何搭建Mybatis框架&#xff0c;但没有对一些配置文件和语法做出详细解读&#xff0c;刚…

免费【2024】springboot 必录德健身器材用品网的设计与实现

博主介绍&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

maven私服上传jar包 400 Bad Request 错误

文章目录 前言一、直接看报错二、问题处理三 maven 私服配置说明总结 前言 maven仓库的私服,一般会存放公司或者个人封装的jar包,用来共享给二次开发和协作伙伴用,很方便 第一次发布没有问题,但是我第二次发布,开始报错了 一、直接看报错 401 无权限我这个是400 说明用户名密…

Sql Server缓冲池、连接池等基本知识(附Demo)

目录 前言1. 缓存池2. 连接池3. 彩蛋 前言 基本的知识推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;Mysql优化高级篇&#xff08;全&#xff09;Mysql底层原理详细剖析常见面试题&#xff08;全&#xff09; 1…

昇思25天学习打卡营第14天|计算机视觉

昇思25天学习打卡营第14天 文章目录 昇思25天学习打卡营第14天FCN图像语义分割语义分割模型简介网络特点数据处理数据预处理数据加载训练集可视化 网络构建网络流程 训练准备导入VGG-16部分预训练权重损失函数自定义评价指标 Metrics 模型训练模型评估模型推理总结引用 打卡记录…

Atom - hackmyvm

简介 靶机名称&#xff1a;Atom 难度&#xff1a;简单 靶场地址&#xff1a;https://hackmyvm.eu/machines/machine.php?vmAtom 本地环境 虚拟机&#xff1a;vitual box 靶场IP&#xff08;Atom&#xff09;&#xff1a;192.168.56.101 跳板机IP(windows 11)&#xff1…

Linux之基础IO(上)

目录 库函数文件操作 写文件 读文件 系统调用文件操作 写文件 读文件 文件描述符fd 深刻理解linux下一切皆文件 重定向原理 在c语言中我们学习了fopen&#xff0c;fread&#xff0c;fwrite接口&#xff0c;用于进行文件相关的操作&#xff0c;在之前我们学习了计算…

科普文:银行信贷系统概叙

信贷业务流程 资金需求者提交申请&#xff1a;资金需求者通过不同渠道&#xff08;如APP、网站、门店等&#xff09;提交贷款申请。 系统交互完成审批&#xff1a;系统通过自动化和人工相结合的方式&#xff0c;对贷款申请进行初步筛选和审批。 系统交互完成策略判断&#xf…

AFAC2024-基于保险条款的问答 比赛日记 llamafactory qwen npu 910B1

AFAC2024: 基于保险条款的问答挑战——我的实战日记 概述 在最近的AFAC2024竞赛中&#xff0c;我参与了基于保险条款的问答赛道。这是一次深度学习与自然语言处理的实战演练&#xff0c;旨在提升模型在复杂保险文本理解与问答生成方面的能力。本文将分享我的参赛过程&#xf…

秒杀优化: 记录一次bug排查

现象 做一人一单的时候&#xff0c;为了提升性能&#xff0c;需要将原来的业务改造成Lua脚本加Stream流的方式实现异步秒杀。 代码改造完成&#xff0c;使用Jmeter进行并发测试&#xff0c;发现redis中的数据和预期相同&#xff0c;库存减1&#xff0c;该用户也成功添加了进去…

【Linux】Linux的基本使用

一.Linux的背景知识. 1.1什么是Linux Linux是一种开源的类Unix操作系统内核. 和Windows是" 并列 "的关系. 1.2Linux的发行版本. Linux 严格意义来说只是一个 “操作系统内核”.一个完整的操作系统 操作系统内核 配套的应用程序. 由于 Linux 是一个完全开源免费…

C++:格式化输入和输出、非格式化输入和输出(控制布尔值格式、整型值格式、浮点数格式;单字节操作put和get、多字节操作getline等)

1、格式化输入和输出 (1)What 标准库定义了一组操纵符&#xff08;本质是函数或对象&#xff09;来修改流的格式状态 当操作符改变流的格式状态时&#xff0c;通常改变后的状态对所有后续 IO 都生效 (2)Which A.控制布尔值的格式 bool bFlag true; std::cout<<std::b…

HTML+CSS3网页字符下雨特效

HTMLCSS3网页字符下雨特效https://www.bootstrapmb.com/item/14952 要在HTML和CSS3中创建一个字符下雨的特效&#xff0c;我们需要使用HTML来构建基本结构&#xff0c;然后使用CSS3的动画和关键帧&#xff08;keyframes&#xff09;来创建动画效果。但请注意&#xff0c;CSS3本…