ASR-语音预处理(一):音频读取

2024-08-24 17:38

本文主要是介绍ASR-语音预处理(一):音频读取,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一.音频读取
  • 二.代码:
  • 三.程序输出:

一.音频读取

这是语音识别系列的第一篇博文,主要介绍音频如何读取以及如何转成矩阵形式。
输入:wav文件
例:A2_1.wav
输出:输入的wav文件所对应的数据矩阵wave_data和帧率framerate。
例:[[1507 1374 1218 … -78 -127 -43]] ,16000

二.代码:

#coding=utf-8import os
import wave
import numpy as np
import matplotlib.pyplot as plt
import math 
import time
from python_speech_features import mfcc
from python_speech_features import delta
from python_speech_features import logfbank
from scipy.fftpack import fftdef read_wav_data(filename):""":param filename:输入音频的绝对路径(路径+文件名)例:D:\\GitHub\\wav\\dae\\train\\A2_1.wav:return:wave_data,framerate:输出音频矩阵,帧率。例:A2_1 [[1507 1374 1218 ...  -78 -127  -43]]读取wav文件,返回声音信号的时域谱矩阵和播放时间"""wav = wave.open(filename,"rb") #打开wav格式的声音文件filenameaudioname = filename.split('\\')[-1] #音频名num_frame = wav.getnframes() #获取帧数print("{}帧数为:{}".format(audioname,num_frame))num_channel = wav.getnchannels() #获取声道数print("{}声道数为:{}".format(audioname,num_channel))framerate = wav.getframerate() # 获取帧率print("{}帧率为:{}".format(audioname,framerate))num_sample_width = wav.getsampwidth() #获取每一帧的比特宽度print("{}比特宽度为:{}".format(audioname,num_sample_width))str_data = wav.readframes(num_frame) # 读取全部的帧(二进制字符串)wav.close() # 关闭流wave_data = np.fromstring(str_data,dtype=np.short) # 将声音文件数据从字符串格式转换为数组矩阵形式print("{} shape: {}".format("wave_data",wave_data.shape))print("{} type: {}".format("wave_data",wave_data.dtype))print("{}: {}".format("wave_data",wave_data))wave_data.shape = -1, num_channel #按照声道数将数组整形,单声道是一列,双声道是两列矩阵print("{} shape(整形后): {}".format("wave_data",wave_data.shape))print("{}(整形后): {}".format("wave_data",wave_data))wave_data = wave_data.T # 将wave_data矩阵转置print("{} shape(转置后):{}".format("wave_data",wave_data.shape))print("{}(转置后):{}".format("wave_data",wave_data))return wave_data, framerateif(__name__=='__main__'):wave_data, fs = read_wav_data("D:\\GitHub\\wav\\dae\\train\\A2_1.wav")

三.程序输出:

A2_1.wav帧数为:163000
A2_1.wav声道数为:1
A2_1.wav帧率为:16000
A2_1.wav比特宽度为:2
wave_data shape: (163000,)
wave_data type: int16
wave_data: [1507 1374 1218 … -78 -127 -43]
wave_data shape(整形后): (163000, 1)
wave_data(整形后): [[1507]
[1374]
[1218]

[ -78]
[-127]
[ -43]]
wave_data shape(转置后):(1, 163000)
wave_data(转置后):[[1507 1374 1218 … -78 -127 -43]]

这篇关于ASR-语音预处理(一):音频读取的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1103153

相关文章

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

java读取excel文件为base64实现方式

《java读取excel文件为base64实现方式》文章介绍使用ApachePOI和EasyExcel处理Excel文件并转换为Base64的方法,强调EasyExcel适合大文件且内存占用低,需注意... 目录使用 Apache POI 读取 Excel 并转换为 Base64使用 EasyExcel 处

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

C语言进阶(预处理命令详解)

《C语言进阶(预处理命令详解)》文章讲解了宏定义规范、头文件包含方式及条件编译应用,强调带参宏需加括号避免计算错误,头文件应声明函数原型以便主函数调用,条件编译通过宏定义控制代码编译,适用于测试与模块... 目录1.宏定义1.1不带参宏1.2带参宏2.头文件的包含2.1头文件中的内容2.2工程结构3.条件编

Python使用openpyxl读取Excel的操作详解

《Python使用openpyxl读取Excel的操作详解》本文介绍了使用Python的openpyxl库进行Excel文件的创建、读写、数据操作、工作簿与工作表管理,包括创建工作簿、加载工作簿、操作... 目录1 概述1.1 图示1.2 安装第三方库2 工作簿 workbook2.1 创建:Workboo