python模拟声音输出_声音的输入输出

本文介绍了Python如何处理声音,包括读写WAV文件、使用pyAudio进行实时声音输入输出,以及播放声音。通过pyAudio实现声音的播放和录音,pyMedia用于播放Mp3文件。此外,还提供了读取和绘制WAV文件波形的代码示例。
摘要由CSDN通过智能技术生成

# 声音的输入输出

在本章我们将学习如何读写WAV文件,如何利用声卡实时地进行声音的输入输出。标准的Python已经支持WAV文件的读写,而实时的声音输入输出需要安装pyAudio([http://people.csail.mit.edu/hubert/pyaudio](http://people.csail.mit.edu/hubert/pyaudio))。最后我们还将看看如何使用pyMedia([http://pymedia.org](http://pymedia.org))进行Mp3的解码和播放。

掌握了上面的基础知识之后,就可以做许多有趣的声效处理的算法实验了。声效处理方面的内容将在以后的章节详细介绍。

## 读写Wave文件

WAV是Microsoft开发的一种声音文件格式,虽然它支持多种压缩格式,不过它通常被用来保存未压缩的声音数据(PCM脉冲编码调制)。WAV有三个重要的参数:声道数、取样频率和量化位数。

* 声道数:可以是单声道或者是双声道

* 采样频率:一秒内对声音信号的采集次数,常用的有8kHz, 16kHz, 32kHz, 48kHz, 11.025kHz, 22.05kHz, 44.1kHz

* 量化位数:用多少bit表达一次采样所采集的数据,通常有8bit、16bit、24bit和32bit等几种

例如CD中所储存的声音信号是双声道、44.1kHz、16bit。

如果你需要自己录制和编辑声音文件,推荐使用Audacity([http://audacity.sourceforge.net](http://audacity.sourceforge.net)),它是一款开源的、跨平台、多声道的录音编辑软件。在我的工作中经常使用Audacity进行声音信号的录制,然后再输出成WAV文件供Python程序处理。

### 读Wave文件

下面让我们来看看如何在Python中读写声音文件:

```

# -*- coding: utf-8 -*-

import wave

import pylab as pl

import numpy as np

# 打开WAV文档

f = wave.open(r"c:\WINDOWS\Media\ding.wav", "rb")

# 读取格式信息

# (nchannels, sampwidth, framerate, nframes, comptype, compname)

params = f.getparams()

nchannels, sampwidth, framerate, nframes = params[:4]

# 读取波形数据

str_data = f.readframes(nframes)

f.close()

#将波形数据转换为数组

wave_data = np.fromstring(str_data, dtype=np.short)

wave_data.shape = -1, 2

wave_data = wave_data.T

time = np.arange(0, nframes) * (1.0 / framerate)

# 绘制波形

pl.subplot(211)

pl.plot(time, wave_data[0])

pl.subplot(212)

pl.plot(time, wave_data[1], c="g

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值