精华内容
参与话题
问答
  • matlab 音频处理、Python音频处理

    千次阅读 2017-05-01 23:07:02
    1. 读取与播放load gong.mat; % y 42028x1 double ...读取 .wav 等音频:audioread() 也可通过数字的方式仿真出一段声音:N=10000; s=zeros(N,1); for a=1:N s(a)=tan(a); %*sin(-a/10); end Fs=20

    1. matlab

    • 读取与播放

      load gong.mat;			% y 42028x1 double
      soundsc(y);
      % 可调节其频率
      soundsc(y, 2*Fs);
      
      • 读取 .wav 等音频:audioread()

      也可通过数字的方式仿真出一段声音:

      N=10000;
      s=zeros(N,1);
      for a=1:N
      s(a)=tan(a); %*sin(-a/10); 
      end
      Fs=2000; %increase value to speed up the sound, decrease to slow it down
      soundsc(s,Fs)
      

    2. Python 音频处理

    • 使用 librosa 库;
    展开全文
  • python 音频处理

    2018-06-23 23:05:22
    音频处理,文件名:基于Python语言的音频捕获及频谱分析程序设计.pdf
  • Python 打开wav文件的操作wav文件利用python打开一个wav音频文件,然后分析wav文件的数据存储格式,有了格式之后就能很方便的进行一些信号处理的操作。Wikipedia给出的wav文件的资料如下Waveform Audio File Format ...

    Python 打开wav文件的操作

    wav文件

    利用python打开一个wav音频文件,然后分析wav文件的数据存储格式,有了格式之后就能很方便的进行一些信号处理的操作。Wikipedia给出的wav文件的资料如下

    Waveform Audio File Format (WAVE, or more commonly known as WAV due to its filename extension - both pronounced "wave"")(rarely, Audio for Windows) is a Microsoft and IBM audio file format standard for storing an audio bitstream on PCs. It is an application of the Resource Interchange File Format (RIFF) bitstream format method for storing data in "chunks", and thus is also close to the 8SVX and the AIFF format used on Amiga and Macintosh computers, respectively. It is the main format used on Windows systems for raw and typically uncompressed audio. The usual bitstream encoding is the linear pulse-code modulation (LPCM) format.

    音频格式资料在网上也有一些标准格式的说明,比如WAVE PCM soundfile format http://soundfile.sapp.org/doc/WaveFormat/

    当然大多数情况下,很需要对信息进行筛选的能力,在使用python来处理wav文件的时候仅仅需要其中的几个操作,并不一定要每个都掌握,在需要的时候查询文档。

    注意

    大段的文字来叙述wav音频文件是什么并不是作为编程练习的目的,人的精力是有限的不可能同时掌握所有的知识点。一开始,就学习声音的原理,然后再验证,这些工作应该是由搞信息编码的研究者来完成,而作为一个工程师应该集中精力研究代码上的复现。不如反其道行之,读取音频文件,根据系统提供的API获得各种参数,再去查询参数的信息。编程练习要思考怎么用一般在处理音频文件的时候。有个流程就是将音频文件导入,分析波形,进行傅里叶变换之类的操作,作为数据的预处理,才可以进行下一步数值数据的处理,其实音频处理最想要的过程无非如上所述。所以正常情况下,还要知道音频文件中的数据的含义,用计算机科学的思想分析就是需要知道它的数据结构。

    音频文件信息

    用到了python 处理wav文件的包 wave,读取wave 信息,遍历参数

    importwave as we

    filename= "child1.wav"WAVE=we.open(filename)for item inenumerate(WAVE.getparams()):print(item)

    查询官方文档中对于wave.getparams()的描述

    Wave_read.getparams()

    Returns a namedtuple() (nchannels, sampwidth, framerate, nframes, comptype, compname), equivalent to output of the get*() methods.

    输出信息(声道,采样宽度,帧速率,帧数,唯一标识,无损)

    20180309235042855695.png

    采样点的个数为 2510762,采样的频率为44100HZ,通过这两个参数可以得到声音信号的时长

    每个采样点是16 bit = 2 bytes ,那么将采样点的个数 2510762*2/(1024*1024)=4.78889MB,那么这个信息就是文件大小信息。

    检验一下声音波形的时间

    child1.wav 4.78MB,时长56s

    time = 56.93337868480726

    根据上面WAVE PCM soundfile format 的资料信息查询。有一个印象:WAV文件中由以下三个部分组成:

    1."RIFF" chunk descriptor 2.The "fmt" sub-chunk 3.The "data" sub-chunk 存这些信息的时候都要要有 “ID”、“大小”、“格式”,这些信息标注了数据的位置,“WAV”格式由“fmt”和“data”,两个部分组成,其中“fmt”的存储块用来存音频文件的格式,“data”的存储块用来存实际听到的声音的信息,物理上描述的振幅和时间:长度(时间)和振幅,当然人的耳朵听加的是时长,以及音调高低。有这么一个概念之后,才联想到“单声道振幅数据为n*1矩阵点,立体声为n*2矩阵点”,有这么一个印象,音频信号处理实质就是对这个数组进行处理。也就是说可以读取这个数组,在配合频率的信息直接画出波形图。

    注意一下几点

    1.一个采样点的值代表了给定时间内的音频信号,一个采样帧由适当数量的采样点组成并能构成音频信号的多个通道。

    2.对于立体声信号一个采样帧有两个采样点,一个采样点对应一个声道。一个采样帧作为单一的单元传送到数/模转换器(DAC),以确保正确的信号能同时发送到各自的通道中。

    3.单声道振幅数据为n*1矩阵点,立体声为n*2矩阵点,那么将来文件的信息处理通过一个矩阵来实现

    WAV文件波形

    为了绘制波形图,需要的参数有时间和振幅的信息,完整的步骤如下:

    1.将WAV文件导入到Python的工作环境中。

    2.设置参数,声音信号(时间、振幅、频率)。

    3.将这些信息通过 matplotlib.pyplot提供的接口绘画出来。

    20180309235042901590.png

    可以得到一个振幅随着时间变化的函数。

    1 importwave as we2 importmatplotlib.pyplot as plt3 importnumpy as np4 from scipy.io importwavfile5

    6 filename = "child1.wav"

    7 WAVE =we.open(filename)8 print("---------声音信息------------")9 for item inenumerate(WAVE.getparams()):10 print(item)11 a = WAVE.getparams().nframes #帧总数

    12 f = WAVE.getparams().framerate #采样频率

    13 sample_time = 1/f #采样点的时间间隔

    14 time = a/f #声音信号的长度

    15 sample_frequency, audio_sequence =wavfile.read(filename)16 print(audio_sequence) #声音信号每一帧的“大小”

    17 x_seq =np.arange(0,time,sample_time)18

    19 plt.plot(x_seq,audio_sequence,"blue")20 plt.xlabel("time (s)")21 plt.show()

    WAV文件的存储格式

    通过上述操作流程,了解了几个信息:

    1.通过python现有包wave 可以获取wav文件几个基础信息,比如文件的声道,声音的采样宽度,帧速率,帧数,是否唯一标识,是否无损,关于WAV文件处理的入门信息,可先用几行代码获得WAV文件基本处理信息,然后将这些信息通过画图的形式绘画出来。

    2.WAV文件中的时间,可以按照采样点数目,以及频率的大小获得,将来可以加窗口,进行数字信号处理上的一些操作,对声音信号作进一步的分析。

    3.WAV文件中将声音信号存为n*1矩阵点或者n*2矩阵点,区分条件为是单声道还是双声道,对声音信号的研究可以转化为这个数组的研究。

    展开全文
  • python音频处理

    千次阅读 2018-12-02 20:04:39
    下载好解压到某个文件夹,并将该文件夹中的bin目录添加到系统path。 第二步:安装pydub pip3 install pydub # -*- coding: utf-8 -*- # @Author : FELIX # @Date : 2018/5/18 15:13 ...from...

    第一步:先下载ffmpeg--》https://ffmpeg.zeranoe.com/builds/

    下载好解压到某个文件夹,并将该文件夹中的bin目录添加到系统path。

    第二步:安装pydub

    pip3 install pydub

    # -*- coding: utf-8 -*-
    # @Author  : FELIX
    # @Date    : 2018/5/18 15:13
    
    from pydub import AudioSegment
    
    sound=AudioSegment.from_file("aaa.mp3","mp3")
    sound2=AudioSegment.from_file('bbb.mp3','mp3')
    # 把一个多声道音频分解成两个单声道
    # index[0]为左声道
    # index[1]为右声道
    # sounds=sound.split_to_mono()
    # print(sounds)
    
    
    # 将两个单声道合并成多声道
    # stereo_sound = AudioSegment.from_mono_audiosegments(sounds[0], sounds[1])
    
    
    
    # # 取得音频的分贝数
    # loudness = sound.dBFS
    # print(loudness)
    # # 获取音频音量大小,该值通常用来计算分贝数(dB= 20×lgX)
    # loudness = sound.rms
    # print(loudness)
    # # 取得音频的声道数
    # channel_count = sound.channels
    # print(channel_count)
    # # 取得音频文件采样宽度
    # bytes_per_sample = sound.sample_width
    # print(bytes_per_sample)
    #
    # # 取得音频文件采样频率
    # frames_per_second = sound.frame_rate
    # print(frames_per_second)
    # #取得音频文件帧宽度
    # bytes_per_frame = sound.frame_width
    # print(bytes_per_frame)
    #
    # #取得音频中的最大振幅
    # normalized_sound = sound.apply_gain(-sound.max_dBFS)
    # print(normalized_sound)
    # #取得音频的持续时间,同 len()
    # print(sound.duration_seconds)
    # print((len(sound) / 1000.0))
    # #取得音频数据
    # raw_audio_data = sound.raw_data
    # # print(raw_audio_data)
    # #取得音频的frame数量
    # number_of_frames_in_sound = sound.frame_count()
    # number_of_frames_in_200ms_of_sound = sound.frame_count(ms=200)
    # print(number_of_frames_in_sound)
    # print(number_of_frames_in_200ms_of_sound)
    
    # 拼接sound1与sound2,返回一个新的AudioSegment实例
    # cossfade:交叉渐变间隔 ms
    # no_crossfade1 = sound.append(sound2, crossfade=5000)
    # print(no_crossfade1)
    # no_crossfade1.export(r'cc.wav',format='wav') # 输出
    
    # 把sound2覆盖在sound1上,两个音频文件会叠加,如果sound2较长,则会被截断。
    # 参数:
    # position:覆盖起始位置(毫秒)
    # loop:是否循环覆盖(true/false)
    # times:重复覆盖次数(默认1)
    # gain_during_overlay:调整被覆盖音频的音量(eg,-6.0)
    # played_togther = sound.overlay(sound2)
    # # sound2_starts_after_delay = sound.overlay(sound2, position=5000)
    # # volume_of_sound1_reduced_during_overlay = sound.overlay(sound2, gain_during_overlay=-8)
    # # sound2_repeats_until_sound1_ends = sound.overlay(sound2, loop=True)
    # # sound2_plays_twice = sound.overlay(sound2, times=2)
    # played_togther.export(r'dd.wav',format='wav') # 输出
    
    
    
    #调整音量大小
    # louder_via_method = sound.apply_gain(+3.5) # 提高
    # quieter_via_method = sound.apply_gain(-5.7) # 减小
    
    
    #淡出
    # 参数:
    # to_gain:淡出结束时音频音量下降到的分贝数
    # from_gain:设置淡出前的所有音频分贝数
    # start:淡出的起始位置
    # end:淡出的结束位置
    # duration:淡出持续时间
    # fade_in_the_hard_way = sound.fade(from_gain=-120.0, start=0, duration=5000)
    # fade_out_the_hard_way = sound.fade(to_gain=-120.0, end=0, duration=5000)
    
    # 反向输出
    # sound.reverse().export(r'ee.wav',format='wav') # 输出
    
    # 调整多声道音频的左右声道音量
    # 如果单声道音频调用此方法,它将先被转换为多声道
    # stereo_balance_adjusted = sound.apply_gain_stereo(-6, +2)
    #
    # #左右声道平衡,按百分比增大一边,减小另一边
    # # pan the sound 15% to the right
    # panned_right = sound.pan(+0.15)
    # # pan the sound 50% to the left
    # panned_left = sound.pan(-0.50)
    #
    #
    # # 基于DSP的渲染
    # # 产生一个反向信号的副本,来消除反相位波,或者降低噪音
    # sound.invert_phase()

     转自:http://www.cnblogs.com/felixwang2/p/9056726.html

     

    展开全文
  • python音频处理thinkdsp,thinkplot,python音频处理thinkdsp,thinkplot,python音频处理thinkdsp,thinkplot
  • python 解码 音频: import time import audioread import matplotlib.pyplot as plt import numpy as np import sys, os filename = '~/Music/a.mp3' with audioread.audio_open(filename) as f: print(f....

    python 解码 音频:

    import time
    import audioread
    import matplotlib.pyplot as plt
    import numpy as np
    import sys, os 
    
    filename = '~/Music/a.mp3'
    with audioread.audio_open(filename) as f:
        print(f.channels, f.samplerate, f.duration)
        for buf_i, buf in enumerate(f):
            if buf_i < 100:
                continue
            data = np.frombuffer(buf, np.int16)
            plt.plot(range(buf_i*len(data)//2, (buf_i+1)*len(data)//2), data[0::2])
            plt.plot(range(buf_i*len(data)//2, (buf_i+1)*len(data)//2), data[1::2])
            if buf_i > 120:
                break
        plt.show()
    

    在这里插入图片描述


    做了一个简单的变化,方便后期处理音频数据:

    import time
    import audioread
    import matplotlib.pyplot as plt
    import numpy as np
    import sys, os 
    
    filename = '~/Music/a.mp3'
    with audioread.audio_open(filename) as f:
        print(f.channels, f.samplerate, f.duration)
        audio_cs = [[]]*f.channels
        for buf_i, buf in enumerate(f):
            data = np.frombuffer(buf, np.int16)
            for ci in range(f.channels):
                audio_cs[ci]+=(data[ci::f.channels].tolist())
    for c in audio_cs:
        print(len(c))
        plt.plot(range(0,len(c)), c)
    plt.show()
    

    参考:

    展开全文
  • 基于python音频处理程序,包括回声,变调,变频等
  • python音频处理相关库

    千次阅读 2019-06-11 10:41:00
    音频处理库—librosa 官网:http://librosa.github.io/librosa/index.html 一个免费、跨平台、开源的音频I/O库——PortAudio 官网:http://www.portaudio.com/ 一个c++写的语音、音乐分析,合成,处理开源库——...
  • Python 音频处理:wave

    2020-11-11 10:56:46
    wave 模块提供了一个处理 WAV 声音格式的便利接口。它不支持压缩/解压,但是支持单声道/立体声。 用法:wave.open(file, mode=None), mode为 rb:生成 wav_read 对象 wb:生成 wav_write 对象 注意不支持同时读写...
  • pydub-python音频处理

    2020-07-14 20:57:50
    注意事项 pydub以milliseconds千分之一秒为单位来处理音频。 参考博文 参考博文2
  • python 音频信号处理

    千次阅读 2018-11-06 10:58:52
    http://www.cnblogs.com/xingshansi/p/6799994.html
  • python音频处理用到的操作 作者:桂。 时间:2017-05-03 12:18:46 链接:http://www.cnblogs.com/xingshansi/p/6799994.html 前言 本文主要记录python下音频常用的操作,以.wav格式文件为例。其实网上有很多...
  • 本文目录前言波形频谱Spectrum波形对象信号对象 ...关于音频处理的方式,后面的代码都会使用python语言进行处理,至于学完后可以干啥,肯定是大家非常关系的,比如音乐的降噪,模拟某个人的声音,提取音频中...
  • 主要给大家介绍了关于Python音频处理库pydub的使用教程,pydub是Python中用户处理音频文件的一个库,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
  • 本篇文章主要介绍了python音频处理用到的操作的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 首先是wave def read_wav_data(filename): ''' 读取一个wav文件,返回声音信号的时域谱矩阵和播放时间 ''' filename="/home/chenyang/"+filename[2:] with wave.open(filename,"rb") as wav: # 打开一个wav格式...
  • Python0018 音频处理(一)音频基础知识1.声音音频基础知识(1)声音是由震动产生,表现为波的形式。波有频率,振幅等参数。对于声波而言:频率越大,音调越高,反之越低。振幅越大,声音越大,反之越小。(2)采样...
  • 主要介绍了音频处理 windows10下python三方库librosa安装方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
  • 本课程讲解使用Python进行音频处理和视频处理,全程讲案例。预计20课,一边录制课程一边补充目录。课程录完之前暂定39元,全部上传之后再重新定价。
  • 『开发技巧』Python音频处理·PyAudio上手教程(录入与播放声音) 当需要使用Python处理音频数据时,使用python读取与播放声音必不可少,下面介绍一个好用的处理音频PyAudio工具包。 PyAudio是Python开源工具...
  • Python 音频相关处理和运算

    千次阅读 2018-12-07 17:33:50
    1、批量读取.wav文件名: 1 2 3 4 5 6 import os   filepath = "... filename= os.listdir(filepath) #得到文件夹下的所有文件名称  ...  print...
  • 介绍几个python音频处理

    万次阅读 2017-05-14 18:24:41
     直接在google上搜索python mp3 process ,推荐比较多的就是这个第三方库了。先来看看官方介绍吧。 About eyeD3 is a Python tool for working with audio files, specifically mp3 files containing ID3 ...
  • Python音频处理学习笔记(未完)

    千次阅读 2017-01-17 10:36:39
    Python处理音频 完全Python新手,连输出语句print都不会的初心者 文章参考了 Miss小王子的博客 前期准备 安装依赖库 numpy matplotlib ...python处理音频 ...#需要先引入音频处理的包 from pylab import* ...

空空如也

1 2 3 4 5 ... 20
收藏数 12,914
精华内容 5,165
关键字:

音频处理