python 音频处理_Python3分析处理声音数据的例子

将音频文件拷贝到程序所在目录即可。

如下所示:

#!/usr/bin/env python

# encoding: utf-8

"""

@Company:华中科技大学电气学院聚变与等离子研究所

@version: V1.0

@author: Victor

@contact: 1650996069@qq.com or yexin@hust.edu.cn 2018--2020

@software: PyCharm

@file: VoiceDataProcessing.py

@time: 2018/9/8 13:08

@Desc:处理声音数据

"""

import wave

import pylab as pl

import numpy as np

print('1650996069@qq.com or yexin@hust.edu.cn')

print('working...')

print("read wav data....")

# 打开WAV文档,声音文件

f = wave.open(r"speak.wav", "rb")

fo = wave.open(r"jg.wav", "wb")

fi = wave.open(r"back.wav", "rb")

# 读取波形数据

# (nchannels, sampwidth, framerate, nframes, comptype, compname)

params = f.getparams()

nchannels, sampwidth, framerate, nframes = params[:4]

str_data = f.readframes(nframes)

fi_params = fi.getparams()

fi_nframes = fi_params[3]

fi_str_data = fi.readframes(fi_nframes)

# 将波形数据转换为数组,并更改

print("update wav data....")

wave_data = np.fromstring(str_data, dtype=np.short)

fi_wave_data = np.fromstring(fi_str_data, dtype=np.short)

# 复制并合并声音

new_wave_data = np.hstack((wave_data, wave_data, wave_data, wave_data, wave_data, wave_data, wave_data, wave_data))

temp_wavedata = fi_wave_data[:len(new_wave_data)]

new_wave_data = temp_wavedata * 0.5 + new_wave_data * 0.5

new_wave_data = np.array(new_wave_data)

new_wave_data = new_wave_data.astype(wave_data.dtype)

new_str_data = new_wave_data.tostring()

# 写波形数据参数

print("save new wav files....")

fo.setnchannels(nchannels)

fo.setframerate(framerate)

fo.setsampwidth(sampwidth)

fo.writeframes(new_str_data)

# 绘制波形

wave_data.shape = -1, 2

wave_data = wave_data.T

time = np.arange(0, nframes) * (1.0 / framerate)

pl.subplot(221)

pl.plot(time, wave_data[0])

pl.subplot(222)

pl.plot(time, wave_data[1], c="g")

pl.xlabel("time (seconds)")

pl.show()

# 绘制波形

new_wave_data.shape = -1, 2

new_wave_data = new_wave_data.T

new_time = np.arange(0, nframes * 8) * (1.0 / framerate)

pl.subplot(223)

pl.plot(new_time, new_wave_data[0])

pl.subplot(224)

pl.plot(new_time, new_wave_data[1], c="g")

pl.xlabel("time (seconds)")

pl.show()

以上这篇Python3分析处理声音数据的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值