python如何录音_python录音,生成wav

本文介绍了如何使用Python的pyaudio库进行录音,并生成wav格式的音频文件。首先通过brew和pip安装必要的库,然后展示了一个简单的录音脚本,该脚本能够持续20秒的录音并保存为output_20s.wav。文章还讨论了如何改进录音脚本,如使用多线程来更精确地控制录音时长。
摘要由CSDN通过智能技术生成

python录音,生成wav

参考:

python

如何编写一个录音软件?

——————————————

安装pyaudio包

brew install portaudio

pip install pyaudio

bingo!

——————————————

不需要界面

#coding=utf8

import sys, threading

import pyaudio, wave

import time

CHUNK = 1024

FORMAT = pyaudio.paInt16

CHANNELS = 1

RATE = 16000

WAVE_OUTPUT_FILENAME = "output_20s.wav"

RECORDING = False

def record_thread(fileName, stream, p):

print('recording')

starttime = time.time()

waveFile =

wave.open(fileName, 'wb')

waveFile.setnchannels(CHANNELS)

waveFile.setsampwidth(p.get_sample_size(FORMAT))

waveFile.setframerate(RATE)

while starttime+20 >

time.time():

wav

以下是使用Python生成同时录音和显示FFT图形的程序: ```python import pyaudio import numpy as np import matplotlib.pyplot as plt # 设置参数 CHUNK = 1024 # 每个缓冲区的帧数 FORMAT = pyaudio.paInt16 # 音频格式 CHANNELS = 1 # 声道数 RATE = 44100 # 采样率 RECORD_SECONDS = 5 # 录音时长 # 初始化PyAudio p = pyaudio.PyAudio() # 打开音频流 stream = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK) # 创建FFT图形 fig, ax = plt.subplots() x = np.linspace(0, RATE, CHUNK) line, = ax.plot(x, np.random.rand(CHUNK)) # 设置图形属性 ax.set_ylim(0, 1) ax.set_xlim(0, RATE//2) ax.grid() # 开始录音 frames = [] for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)): # 读取音频数据 data = stream.read(CHUNK) frames.append(data) # 转换为numpy数组 y = np.frombuffer(data, dtype=np.int16) # 计算FFT fft_data = np.abs(np.fft.fft(y))[:CHUNK//2] / (CHUNK//2) # 更新图形 line.set_ydata(fft_data) plt.draw() plt.pause(0.001) # 结束录音 stream.stop_stream() stream.close() p.terminate() # 将录音数据保存为WAV文件 wavefile = wave.open("output.wav", 'wb') wavefile.setnchannels(CHANNELS) wavefile.setsampwidth(p.get_sample_size(FORMAT)) wavefile.setframerate(RATE) wavefile.writeframes(b''.join(frames)) wavefile.close() ``` 该程序使用PyAudio库来读取音频数据和录制音频,使用NumPy库来计算FFT,使用Matplotlib库来显示FFT图形。程序首先打开音频流,然后创建FFT图形,并设置图形属性。在循环中,程序读取音频数据,将其转换为NumPy数组并计算FFT,然后更新图形。最后,程序将录音数据保存为WAV文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值