Python3分析处理声音数据的实例讲解

  • 更新时间:2020-06-15 15:25:53
  • 编辑:袁翠安
给大家整理一篇相关的编程文章,网友吕向文根据主题投稿了本篇教程内容,涉及到Python3、处理、声音、数据、Python3分析处理声音数据的例子相关内容,已被309网友关注,如果对知识点想更进一步了解可以在下方电子资料中获取。
  • Volume Booster / 128 KB 推荐度:
  • 视点:Photoshop CS3数码照片处理技巧解密 / 39.93 MB 推荐度:
  • 《计算机图形图像处理Photoshop CS3中文版》教案,素材 / 268.51 MB 推荐度:
  • 《用图形学Python 3》源码资源 / 243 MB 推荐度:
  • 《计算机图形图像处理Photoshop 7.0 (第2版)》素材 / 115.11 MB 推荐度:
  • 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分析处理声音数据的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。

    相关教程

    用户留言