功能描述

  因为在研究使用openSMILE提取特征时,需要对语音进行分割,我找了很多方法,都无法实现自己想要效果,语音自己实现了语音分割并保存的代码,我测试了一下,可以达到自己想要的结果,因此写一篇博客,方便自己后期查看,也可以分享给大家参考。
  功能为:给定一个语音句子,将这个句子等分几个片段,并保存为.wav文件。

代码实现和分析

  大家如果想尝试,自己在代码所在文件夹下准备一个.wav语音文件,新建一个文件夹,修改代码里的语音名和文件夹名,运行即可实现语音分割。
实现代码如下:

import wave
import numpy as npdef read_file(filename):file = wave.open(filename, 'r')params = file.getparams()nchannels, sampwidth, framerate, wav_length = params[:4]str_data = file.readframes(wav_length)wavedata = np.frombuffer(str_data, dtype=np.short)file.close()return wavedata, framerate, nchannels, sampwidth, wav_length# 设置相应参数并保存为wav文件
def save_wav(data, framerate, nchannels, sampwidth, name):outwave = wave.open(name, 'wb')  # 定义存储路径以及文件名data_size = len(data)nframes = data_sizecomptype = "NONE"compname = "not compressed"outwave.setparams((nchannels, sampwidth, framerate, nframes, comptype, compname))# 注意采样率要放在nchannels, sampwidth后面,否则保存的语音没有声音outwave.writeframes(b''.join(data))outwave.close()return 0if __name__ == "__main__":path = "./audio.wav"  # 待语音的语音path_2 = "./file/"   # 分割后语音放置的文件夹wavedata, framerate, nchannels, sampwidth, wav_length = read_file(path)print("framerate, nchannels, sampwidth, wav_length\n", framerate, nchannels, sampwidth, wav_length)length = wav_length//3  # 将语音三等分for i in range(0, len(wavedata), length):data = wavedata[i:length+i]name = path_2+path[-9:-4]+"_"+str(i)+".wav"  # 设置保存的名字print(name)save_wav(data, framerate, nchannels, sampwidth, name)

运行结果为:

framerate, nchannels, sampwidth, wav_length16000 1 2 18972
./file/audio_0.wav
./file/audio_6324.wav
./file/audio_12648.wav

代码分析

  代码主要由三个部分组成:

  1. 语音文件读取部分,这里的作用是用来读取语音信号以及对应的参数,并将语音转为数组。
  2. 语音保存部分,这里的作用是根据参数进行语音数据的保存。
  3. 主函数部分,调用两个函数实现语音的读取,然后设定分割长度,然后根据读取的参数进行保存。

  在写代码的过程中我发现一个小问题,在设置参数时,如果采样率放在通道数和采样宽度前面,保存的语音是没有声音的,将顺序改过来就能听到声音了。

outwave.setparams((nchannels, sampwidth, Framerate, nframes, comptype, compname))

用python实现语音的分割并保存为.wav文件相关推荐

  1. Python爬取售房信息并保存至CSV文件

    Python爬取售房信息并保存至CSV文件 在上一篇文章: Python爬取租房信息并保存至Excel文件,介绍了如何使用Python爬取租房信息并保存至Excel文件,在本案例中则是使用Python ...

  2. Python音频处理:创建一个正弦波并保存为wav文件

    Python音频处理:创建一个正弦波并保存为wav文件 0. 预备知识 0.1 数字信号基础 0.2 声学概念基础 1. 创建一个正弦波 2. 保存为wav文件 0. 预备知识 0.1 数字信号基础 ...

  3. 安卓Android开发:使用AudioRecord录音、将录音保存为wav文件、使用AudioTrack保存录音

    一.使用AudioRrecord录音 1.1声明 首先需要声明一个AudioRecord类的实例.之所以需要事先声明,是因为在本例中,录音的启动和结束被封装在两个不同的方法里.而通常来讲," ...

  4. Python爬取起点小说并保存到本地文件夹和MongoDB数据库中

    Python爬取起点小说并保存到本地MongoDB数据库中 工具:Python3.7 + Mongo4.0 + Pycharm """ 爬取起点小说<诡秘之主> ...

  5. python爬虫-豆瓣爬取数据保存为html文件

    接<python爬虫-豆瓣数据爬取-正则匹配>中的案例五,将爬取的豆瓣租房信息网址和标题保存为html文件. 脚本修改如下: # -*-coding:utf-8 -*- import re ...

  6. python使用nibabel和sitk读取保存nii.gz文件

    nii.gz格式是医学图像常用的压缩格式,python中可用nibabel和sitk来读取保存. 使用nibabel 由于使用nibabel图像会旋转90度,所以读取保存的时候还得保存映射信息,3维图 ...

  7. python对文本数据进行采样_Python对wav文件的重采样实例

    例如从2channel,4.41k hz 重采样到 1 channel,16k hz def downsampleWav(src, dst, inrate=44100, outrate=16000, ...

  8. Python学习-批量提取图片名称保存至txt文件

    个人微信公众号:AI研习图书馆,欢迎关注~ 深度学习知识及资源分享,学习交流,共同进步~ Python提取图片名称保存到txt文件 1. 环境 Windows7+Anaconda3+python 3. ...

  9. ffmpeg提取mp4文件中的音频,保存为wav文件

    如题,一个命令行即可: ffmpeg -i 123.mp4 -acodec pcm_s16le -f s16le -ac 1 -ar 16000 -f wav 123.wav 这样就生成了一个wav文 ...

最新文章

  1. python天天学怎么样-python练习:好好学习,天天向上
  2. J.U.C系列(五)BlockingQueue的使用
  3. js使用defineProperty的一些坑
  4. 嵌入式的坑在哪方面?
  5. 第 5-5 课:线程安全——synchronized 和 ReentrantLock + 面试题
  6. WEB安全基础-WEB介绍
  7. 浏览器输入网址回车发生的事情?--
  8. 远程桌面连接,凭据问题
  9. 2022 腾讯云 阿里云返佣政策对比
  10. c语言万年历完整源代码,C语言万年历的源程序
  11. ❤️1000道《计算机基础知识》汇总上----(建议收藏)❤️
  12. 计算股票收盘价的月日均值 matplotlib绘图
  13. 【RedisTemplate】Set数据类型的常用操作
  14. 程序员在技术之外,还要掌握一个技能——自我营销能力
  15. 转自周金涛:一辈子有三次暴富机会,最近的一次在2019年?2018年你要怎么做? (2018-02-21 17:49:17)...
  16. 赚钱 36 计 - 第三十二计:预收计
  17. 【纪中受难记】——Day5: 改题好烦
  18. cordova跳转远程页面调用浏览器问题
  19. 《互联网时代》 第六集 迁徙
  20. 在Ubuntu系统上安装Windows 10(真实有效)

热门文章

  1. 是谁在我的心里打了个结(二十七)责任 【结局】
  2. Android L 值不值得刷?十个问题解疑惑
  3. java线程池的工作原理_JAVA线程池原理详解一
  4. 关于几何学的等同公理
  5. Armstrong公理证明
  6. flack框架..学习中
  7. Sandcastle Help File Builder BE0037报错
  8. mysql sql注入很常用_常见sql注入的类型
  9. 关于mybatis中selectKey的用法
  10. 工作一年,面试受挫,反省....