精华内容
下载资源
问答
  • python读取wav文件

    2019-03-21 05:16:10
    python读取wav文件
  • python读取wav文件绘图

    2018-05-28 08:27:22
    简单的 python 读取 wav 文件并绘图
  • Python读取Wav文件、输出波形、播放wav文件、输出Wav文件
  • Python 读取WAV文件并绘制波形图 ffmpeg -i test_pcm_mulaw.wav -f wav -codec:a pcm_s16le -ar 8000 -ac 1 out.wav yingc@yingc:~/media/audio$ ffprobe out.wav ffprobe version 2.2.4 Copyright (c) 2007-...

    aa

    Python 读取WAV文件并绘制波形图

     

    ffmpeg -i test_pcm_mulaw.wav  -f wav -codec:a pcm_s16le -ar 8000 -ac 1 out.wav

    yingc@yingc:~/media/audio$ ffprobe out.wav
    ffprobe version 2.2.4 Copyright (c) 2007-2014 the FFmpeg developers
    built on Apr 13 2016 08:42:24 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
    configuration: --prefix=/home/yingc/git/thirdparty/av/ffmpeg/output/ffmpeg_build/ --bindir=/home/yingc/git/thirdparty/av/ffmpeg/output/bin --extra-cflags=' -I/home/yingc/git/thirdparty/av/ffmpeg/output/ffmpeg_build/include' --extra-ldflags=-L/home/yingc/git/thirdparty/av/ffmpeg/output/ffmpeg_build/lib --extra-libs=-ldl --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-x11grab --disable-stripping --enable-extra-warnings --disable-optimizations --enable-openssl --enable-static --enable-debug=3
    libavutil 52. 66.100 / 52. 66.100
    libavcodec 55. 52.102 / 55. 52.102
    libavformat 55. 33.100 / 55. 33.100
    libavdevice 55. 10.100 / 55. 10.100
    libavfilter 4. 2.100 / 4. 2.100
    libswscale 2. 5.102 / 2. 5.102
    libswresample 0. 18.100 / 0. 18.100
    libpostproc 52. 3.100 / 52. 3.100
    Input #0, wav, from 'out.wav':
    Metadata:
    encoder : Lavf55.33.100
    Duration: 00:08:10.03, bitrate: 128 kb/s
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 8000 Hz, 1 channels, s16, 128 kb/s

      

    Opening a wave file in python: unknown format: 49. What's going wrong?

     

     

     

    aa

     

    转载于:https://www.cnblogs.com/jingzhishen/p/7060020.html

    展开全文
  • python读取wav文件并播放[pyaudio/wave]

    千次阅读 2019-04-12 22:49:00
    python读取wav文件并播放[pyaudio/wave] #!/usr/bin/python # encoding:utf-8 import pyaudio import wave CHUNK = 1024 # 从目录中读取语音 wf = wave.open('mic4.wav', 'rb') # ...

    python读取wav文件并播放[pyaudio/wave]

    #!/usr/bin/python
    # encoding:utf-8
    
    import pyaudio
    import wave
    
    
    CHUNK = 1024
    # 从目录中读取语音
    wf = wave.open('mic4.wav', 'rb')
    # read data
    data = wf.readframes(CHUNK)
    # 创建播放器
    p = pyaudio.PyAudio()
    
    # 获得语音文件的各个参数
    FORMAT = p.get_format_from_width(wf.getsampwidth())
    CHANNELS = wf.getnchannels()
    RATE = wf.getframerate()
    
    print('FORMAT: {} \nCHANNELS: {} \nRATE: {}'.format(FORMAT, CHANNELS, RATE))
    
    # 打开音频流, output=True表示音频输出
    stream = p.open(format=FORMAT,
    
                    channels=CHANNELS,
                    rate=RATE,
                    frames_per_buffer=CHUNK,
                    output=True)
    # play stream (3) 按照1024的块读取音频数据到音频流,并播放
    while len(data) > 0:
        stream.write(data)
        data = wf.readframes(CHUNK)

     

    posted @ 2019-04-12 22:49 douzujun 阅读( ...) 评论( ...) 编辑 收藏
    展开全文
  • python读取wav文件并进行FFT变换

    千次阅读 2019-10-11 15:32:55
    一、wav格式文件 WAV为微软公司(Microsoft)开发的一种声音文件格式,它符合RIFF(Resource Interchange File Format)文件规范,用于保存...支持多种音频数字,取样频率和声道,标准格式化的WAV文件和CD格式一样,...

    一、wav格式文件

    WAV为微软公司(Microsoft)开发的一种声音文件格式,它符合RIFF(Resource Interchange File Format)文件规范,用于保存Windows平台的音频信息资源,被Windows平台及其应用程序所广泛支持,该格式也支持MSADPCM,CCITT A LAW等多种压缩运算法,支持多种音频数字,取样频率和声道,标准格式化的WAV文件和CD格式一样,也是44.1K的取样频率,16位量化数字,因此在声音文件质量和CD相差无几! WAV打开工具是WINDOWS的媒体播放器。
      通常使用三个参数来表示声音,量化位数,取样频率和采样点振幅。量化位数分为8位,16位,24位三种,声道有单声道和立体声之分,单声道振幅数据为n1矩阵点,立体声为n2矩阵点,取样频率一般有11025Hz(11kHz) ,22050Hz(22kHz)和44100Hz(44kHz) 三种,不过尽管音质出色,但在压缩后的文件体积过大!相对其他音频格式而言是一个缺点,其文件大小的计算方式为:WAV格式文件所占容量(B) = (取样频率 X量化位数X 声道) X 时间 / 8 (字节= 8bit) 每一分钟WAV格式的音频文件的大小为10MB,其大小不随音量大小及清晰度的变化而变化。
      WAV是最接近无损的音乐格式,所以文件大小相对也比较大。

    二、python代码

    import wave
    from scipy.fftpack import fft,ifft
    import matplotlib.pyplot as plt
    import numpy as np
    
    def wave_read(path):
        '''#打开wav文件 ,open返回一个的是一个Wave_read类的实例,
        通过调用它的方法读取WAV文件的格式和数据'''
        f=wave.open(path,"rb")
        #一次性返回所有的WAV文件的格式信息,它返回的是一个组元(tuple):声道数, 量化位数(byte单位),
        # 采
        # 样频率, 采样点数, 压缩类型, 压缩类型的描述。wave模块只支持非压缩的数据,因此可以忽略最后两个信息'''
        params=f.getparams()
        # 读取波形数据
        nchannels, sampwidth, framerate, nframes=params[:4]
        # 读取声音数据,传递一个参数指定需要读取的长度(以取样点为单位)
        str_date=f.readframes(nframes)
        f.close()
        # 需要根据声道数和量化单位,将读取的二进制数据转换为一个可以计算的数组
        wave_date=np.frombuffer(str_date,dtype=np.short)
        # 将wave_data数组改为2列,行数自动匹配。在修改shape的属性时,需使得数组的总长度不变。
        wave_date.shape=-1,2
        # 转置数据,使成为2行的数据,方便下面时间匹配
        wave_date=wave_date.T
        #通过取样点数和取样频率计算出每个取样的时间,也就是周期T=采样单数/采样率
        time=np.arange(0,nframes)* (1.0/framerate)
        return wave_date,time
    
    def date_fft(data,time,start,end):
        #wavedata, wavetime = wave_read(path)
        t=[]
        y=[]
        for i in range(time.size):
            if ((time[i]>=start) & (time[i]<=end)):
                t=np.append(t,time[i])
                y=np.append(y,data[0][i])#取左声道
        n=len(t)# 信号长度
        yy=fft(y)
        yf=abs(yy)#取绝对值
        yf1=abs(fft(y))/n#归一化处理
        yf2=yf1[range(int(n/2))]##由于对称性,只取一半区间
    
        xf=np.arange(len(y))#频率
        xf1=xf
        xf2=xf[range(int(n/2))]#取一半区间
    
        #显示原始序列
        plt.figure()
        plt.subplot(221)
        plt.plot(t,y,'g')
        plt.xlabel("Time")
        plt.ylabel("Amplitude")
        plt.title("Original wave")
    
        #显示取绝对值后的序列
        plt.subplot(222)
        plt.plot(xf, yf)
        plt.xlabel("Freq (Hz)")
        plt.ylabel("|Y(freq)|")
        plt.title("FFT of Mixed wave(two sides frequency range",fontsize=7,color='#7A378B')
        # 注意这里的颜色可以查询颜色代码表
    
        #显示归一化处理后双边序列
        plt.subplot(223)
        plt.plot(xf1, yf1)
        # 注意这里的颜色可以查询颜色代码表
        plt.xlabel("Freq (Hz)")
        plt.ylabel("|Y(freq)|")
        plt.title('FFT of Mixed wave(Normalized processing)',fontsize=10,color='#F08080')
    
        # 显示归一化处理后单边序列
        plt.subplot(224)
        plt.plot(xf2, yf2, 'b')
        # 注意这里的颜色可以查询颜色代码表
        plt.xlabel("Freq (Hz)")
        plt.ylabel("|Y(freq)|")
        plt.title('FFT of Mixed wave',fontsize=10,color='#F08080')
    
        plt.show()
    
    
    wave_date, time=wave_read("01.wav")
    date_fft(wave_date,time,1,2)
    
    #左右声道的显示
    plt.figure()
    plt.subplot(211)
    plt.plot(time, wave_date[0])
    plt.title("Left channel")
    plt.subplot(212)
    plt.plot(time, wave_date[1], c="g")
    plt.title("Right channel")
    plt.show()
    
    

    三、图像显示

    1.左右声道的显示

    在这里插入图片描述

    2.FFT变换显示

    在这里插入图片描述

    四、参考文章

    1.Python读取麦克风保存成文件并进行FFT
    2.https://blog.csdn.net/weixin_32393347/article/details/85273820
    3.https://blog.csdn.net/qq_39516859/article/details/79819276
    4.https://blog.csdn.net/jeffrey2010/article/details/77427451

    展开全文
  • import wave import os.path ...# 获取目录下所有的WAV文件 wav_files = list() for i in files: if os.path.splitext(i)[1] == '.WAV': wav_files.append(i) # 文件名按照数字大小排序 wav_files.sort(key.
    import wave
    import os.path
    # 音频存放文件夹相对路径
    filedir = os.getcwd()
    # 获取目录下所有文件
    files = os.listdir(filedir)
    # 获取目录下所有的WAV文件
    wav_files = list()
    for i in files:
        if os.path.splitext(i)[1] == '.WAV':
            wav_files.append(i)
    # 文件名按照数字大小排序
    wav_files.sort(key = lambda x:int(x[:-4]))
    # 获取音频时长
    for file in wav_files:
        wav_path = filedir+'/'+file
        with wave.open(wav_path,'rb') as f:
            frames = f.getnframes()
            rate = f.getframerate()
            wav_length = frames / float(rate)
            #wav_length = round(frames / float(rate), 1)
            print(file,"音频长度:",wav_length,"秒")

     

    展开全文
  • Python读取WAV文件的几种方式整理

    万次阅读 多人点赞 2018-07-14 09:46:17
    sample_rate, sig = wavfile.read('new.wav') print(&amp;quot;采样率: %d&amp;quot; % sample_rate) print(sig) if sig.dtype == np.int16: print(&amp;quot;PCM16位整形&amp;quot;
  • 函数 module 用法 wave.open wave wave.open(file, mode=None),两种模式,‘rb’只读;'wb’只写。只读返回一个Wave_read对象;只写返回一个Wave_write对象。返回对象为特殊类型,不是...这个函数无法读取24bi...
  • I'm reading a file in Python using either of librosa, wave or soundfile libraries and I need to push the chunk (any size) to a HTTP stream. By specification, stream string input requires me to convert...
  • 本来想自己整理一个pythonwav文件的处理方法的,一搜才发现已经有人做了,那就先把连接存在这里,有时间自己再添加整理吧。 pysoundfile https://pysoundfile.readthedocs.io/en/0.9.0/ librosa ...
  • # -*- coding: utf-8 -*-import waveimport pylab as plimport numpy as np# 打开WAV文档f = wave.open(r"1.wav", "rb")# 读取格式信息# (nchannels, sampwidth, framerate, nframes, comptype, compname)params = f...
  • # -*- coding: utf-8 -*- """ Created on Mon Jun 19 16:59:32 2017 ...sample_rate, X = wavfile.read('music.wav') print (sample_rate, X.shape) specgram(X, Fs=sample_rate, xextent=(0,192000))
  • Python 读取WAV文件 import wave import struct from scipy import * from pylab import * #读取wav文件,我这儿读了个自己用python写的音阶的wav filename = '1.wav' wavefile = wave.open(filename, 'r') # open ...
  • Python 读取WAV音频文件 画频谱

    万次阅读 2015-09-08 12:56:36
    Python 读取WAV文件 import wave import struct from scipy import * from pylab import * #读取wav文件,我这儿读了个自己用python写的音阶的wav filename = '1.wav' wavefile = wave.open(filename, 'r') # open...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,658
精华内容 1,463
关键字:

python读取wav文件

python 订阅