python 和linux环境下:音频处理变频变调的方法和框架

版权声明: https://blog.csdn.net/weixin_32393347/article/details/82842780

前戏——音乐基础

  • 声音是靠波来传播的,区别任何的声音需要依据三个来区分:响度、音高和音色响度
  • 音高:声音具有确定的音高,声音就可以使空气以笃定的方式运行。低音就是频率低。
  • 一个乐音频率是另外一个乐音的频率的2倍,我就就称为比它高八度,声音的震动频率=音源的振动频率=鼓膜的震动频率。耳朵最低频率:16~20周/秒,最高20000周/秒
  • 改变音源的质量也可以改变频率

音色

  1. 傅里叶分析:把多种波看成由很多纯音组成的波的方法
  2. 音高是由基频决定的。
  3. 谐波:附加的纯音是谐波。
  4. 频谱:描述各种波的振幅的大小的图叫做频谱图,这在声学中是相当的重要的。
  5. 相位的差别:各个组元在初始时间上的差别
  6. 带宽:共振器或者滤波器能够产生效应的频率范围
  7. 分贝:用来比较两个声音的功率大小的衡量尺度
  8. 复合波:任何一个非正弦波都是复合波
  9. 方均根振幅:振幅平方后取均值然后开方。
  10. 功率:声音的功率与方均根振幅成正比。
  11. 基频:一个复合波重复的基频,也是各个组元频率的最大公因子。具有这个频率的组元很有可能有很大的振幅。
  12. 谐波:是基频的整数倍的波。
  13. 纯音的波就是正弦波,

高潮——处理过程

SoundTouch:变频变调
变频变调:声音的属性
响度:(loudness):音量,与声波的振幅有关系
音调:(pitch)声调与声音的频率有关系——声音频率越大,音调就越高,否则就越低。
音色:(Quality)由物体结构的特性决定
A/D转换(Analog-to-Digital Converter)
样本sample:声波
→ 采样sampling
→ 量化quantization:将连续值离散化
→ 编码coding:可由软件或硬件芯片完成
→ (压缩compress):mp3等格式
→ 二进制1010…10

  • PCM(Pulse-code modulation,脉冲编码调制),是将模拟信号数字化的一种经典方式,计算机、DVD以及数字电话等系统中的标准格式采用的就是PCM。它的基本原理就是以上流程产生PCM流。另外,可以调整PCM的以下属性来达到不同的采样需求:
  • 采样率(Sampling Rate):多久采样一次。人耳所能辨识的声音范围是20-20KHZ,所以一般都选用44.1kHz、48kHz或者96kHz做为采样率。
  • 采样深度(Bit Depth):量化的离散值的位数,越高越精准,如32Bit
  • SoundTouch是一个用C++编写的开源的音频处理库,可以改变音频文件或实时音频流的节拍(Tempo)、音调(Pitch)、回放率(Playback Rates),还支持估算音轨的稳定节拍率(BPM rate)。ST的3个效果互相独立,也可以一起使用。这些效果通过采样率转换、时间拉伸结合实现。 Tempo节拍:通过拉伸时间,改变声音的播放速率而不影响音调。 Playback Rate回放率 :以不同的转率播放唱片(DJ打碟?),通过采样率转换实现。 Pitch音调:在保持节拍不变的前提下改变声音的音调,结合采样率转换+时间拉伸实现。如:增高音调的处理过程是:将原音频拉伸时长,再通过采样率转换,同时减少时长与增高音调变为原时长。
  • PCM(Pulse Code Modulation,脉冲编码调制),.wav文件中主要是这种格式,因此ST的示例都是处理wav音频。mp3等格式经过了压缩,需转换为PCM后再用ST处理。
  • 可实现实时音频流处理:
    输入/输出延迟约为100ms;实时处理44.1kHz/16bit的立体声,需要133Mhz英特尔奔腾处理器或更好。

变频变调工具:sonci

在linux下输入命令:sonic

Usage: sonic [OPTION]... infile outfile
    -c         -- Modify pitch by emulating vocal chords vibrating
                  faster or slower.
    -p pitch   -- Set pitch scaling factor.  1.3 means 30% higher.
    -q         -- Disable speed-up heuristics.  May increase quality.
    -r rate    -- Set playback rate.  2.0 means 2X faster, and 2X pitch.
    -s speed   -- Set speed up factor.  2.0 means 2X faster.
    -v volume  -- Scale volume by a constant factor.
  • 处理音频命令:
$ sonic -r 2 0.wav 00.wav
$ sonic -p 1.3 0.wav 000.wav
$ sonic -c  0.wav 00000.wav

感谢观看

猜你喜欢

转载自blog.csdn.net/weixin_32393347/article/details/82842780