• python手记(50)


    #!/usr/bin/env python  
    # -*- coding: utf-8 -*-
    #http://blog.csdn.net/myhaspl  
    #code:myhaspl@qq.com 
    import wave
    import pylab as pl
    import numpy as np
    
    
    print 'http://blog.csdn.net/myhaspl'  
    print 'myhaspl@qq.com'  
    print  
      
    print 'working...' 
    
    
    
    print "generate wav data...."
    # 打开WAV文档
    
    fo = wave.open(r"plpl1.wav", "wb")
    
    
    # 设置波形参数
    #采样率
    framerate = 22050
    #声道数
    nchannels=2
    #每位宽度
    sampwidth=2
    #长度
    nframes =framerate
    #频率
    freq=440
    #最大振幅
    max_amplitude = 4000
    #每样本秒数
    interval=1.0/freq
    #每周期样本数
    samplepercycle=interval*framerate#=interval/(1/framerate)
    
    wave_data=np.zeros((nframes), dtype=np.short)
    
    
    maxcycle=2*np.pi
    for curpos in xrange(0,nframes):
        possamp=np.sin((curpos/samplepercycle)*maxcycle)
        sampleval=int(max_amplitude*possamp)
        wave_data[curpos]=sampleval
    
    str_data=wave_data.tostring()
    
    
    
    
    
    
    
    
    #频率
    freq=880
    #最大振幅
    max_amplitude = 2000
    #每样本秒数
    interval=1.0/freq
    #每周期样本数
    samplepercycle=interval*framerate#=interval/(1/framerate)
    
    new_wave_data=np.zeros((nframes), dtype=np.short)
    
    
    maxcycle=2*np.pi
    for curpos in xrange(0,nframes):
        possamp=np.sin((curpos/samplepercycle)*maxcycle)
        sampleval=int(max_amplitude*possamp)
        new_wave_data[curpos]=sampleval
    
    
    
    
    
    
    
    # 绘制波形
    wave_data.shape = -1, 2
    wave_data = wave_data.T
    new_wave_data.shape = -1, 2
    new_wave_data = new_wave_data.T
    time = np.arange(0, nframes/2)[:100]# * (1.0 / framerate)
    pl.subplot(323)
    pl.plot(time, new_wave_data[0][:100])
    pl.subplot(324)
    pl.plot(time, new_wave_data[1][:100], c="g")
    pl.xlabel("time (seconds)")
    #波形叠加
    new_wave_data+=wave_data
    
    
    
    
    # 绘制波形
    
    time = np.arange(0, nframes/2)[:100]# * (1.0 / framerate)
    pl.subplot(321)
    pl.plot(time, wave_data[0][:100])
    pl.subplot(322)
    pl.plot(time, wave_data[1][:100], c="g")
    pl.xlabel("time (seconds)")
    
    time = np.arange(0, nframes/2)[:100]# * (1.0 / framerate)
    pl.subplot(325)
    pl.plot(time, new_wave_data[0][:100])
    pl.subplot(326)
    pl.plot(time, new_wave_data[1][:100], c="g")
    pl.xlabel("time (seconds)")
    #写波形数据参数
    print "save new wav files...."
    new_str_data=new_wave_data.tostring()
    fo.setnchannels(nchannels)
    fo.setframerate(framerate)
    fo.setsampwidth(sampwidth)
    fo.setnframes(nframes)
    
    fo.writeframes(new_str_data)
    fo.close()
    

    本博客所有内容是原创,未经书面许可,严禁任何形式的转载

    http://blog.csdn.net/u010255642

    python 产生声音的正弦波并叠加

    >>> runfile(r'K:ook_progaudio_hy.py', wdir=r'K:ook_prog')
    http://blog.csdn.net/myhaspl
    myhaspl@qq.com


    working...
    generate wav data....
    save new wav files....


  • 相关阅读:
    程序员都必读
    ia-64 vs x86-64
    Linux内核学习
    开源liscense对比
    列存储
    大数据科普
    [USACO1.5]数字三角形
    [USACO08FEB]酒店Hotel
    数的划分
    CodeForce 18D
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3290036.html
Copyright © 2020-2023  润新知