Python通过麦克风录音生成WAV文件的具体步骤如下:
过程
-
安装
pyaudio
库。pyaudio
是一个 Python 调用音频 I/O 数据库的模块,可以用来开发简单的音频应用程序。用pip
安装:pip install pyaudio
。 -
导入
pyaudio
库和wave
库。wave
库是 Python 用于读写 WAV 文件的标准库,主要用于处理音频流。
import pyaudio
import wave
- 设置录音参数。包括采样率(
RATE
)、帧数(CHUNK
)、录音时长(record_seconds
)、声道数(CHANNELS
)等。
# 录音参数
RATE = 44100 # 音频采样率
CHUNK = 1024 # 缓冲时间
record_seconds = 5 # 录音时长
CHANNELS = 2 # 声道数
- 创建
pyaudio
的Audio
对象。这个对象可以打开音频设备并提供一些方法用于录制、读取和播放声音流。
# 创建 pyaudio 流
audio = pyaudio.PyAudio()
stream = audio.open(format=pyaudio.paInt16, # 使用量化位数 16 位
channels=CHANNELS, # 输入声道数目
rate=RATE, # 采样率
input=True, # 打开输入流
frames_per_buffer=CHUNK) # 缓冲区大小
frames = [] # 存放录制的数据
- 开始录音,通过
stream.read()
方法读取数据流。每读取一次数据流,程序都将这部分数据追加到frames
列表中。
# 录音
for i in range(0, int(RATE / CHUNK * record_seconds)):
# 从麦克风读取数据流
data = stream.read(CHUNK)
# 将数据追加到列表中
frames.append(data)
- 停止录音,关闭输入流并释放资源。
# 停止录音,关闭输入流
stream.stop_stream()
stream.close()
audio.terminate()
# 将录音数据写入到 WAV 文件中
with wave.open("output.wav", "wb") as wf:
wf.setnchannels(CHANNELS)
wf.setsampwidth(audio.get_sample_size(pyaudio.paInt16)) # 量化位数 16 位
wf.setframerate(RATE)
wf.writeframes(b"".join(frames))
这样,就利用 Python 通过麦克风录制声音,并将其保存为 WAV 文件的完整攻略实现了。
以下是完整代码示例:
import pyaudio
import wave
# 录音参数
RATE = 44100 # 音频采样率
CHUNK = 1024 # 缓冲时间
record_seconds = 5 # 录音时长
CHANNELS = 2 # 声道数
# 创建 pyaudio 流
audio = pyaudio.PyAudio()
# 打开输入流,读取麦克风数据
stream = audio.open(format=pyaudio.paInt16, # 使用量化位数 16 位
channels=CHANNELS, # 输入声道数目
rate=RATE, # 采样率
input=True, # 打开输入流
frames_per_buffer=CHUNK) # 缓冲区大小
frames = [] # 存放录制的数据
# 录音
for i in range(0, int(RATE / CHUNK * record_seconds)):
# 从麦克风读取数据流
data = stream.read(CHUNK)
# 将数据追加到列表中
frames.append(data)
# 停止录音,关闭输入流
stream.stop_stream()
stream.close()
audio.terminate()
# 将录音数据写入到 WAV 文件中
with wave.open("output.wav", "wb") as wf:
wf.setnchannels(CHANNELS)
wf.setsampwidth(audio.get_sample_size(pyaudio.paInt16)) # 量化位数 16 位
wf.setframerate(RATE)
wf.writeframes(b"".join(frames))
这段代码可以用于录制 5 秒钟的音频,并将结果保存为 output.wav
文件。
另外一个例子是,在上述的代码中,进一步将录制的语音进行了自动化分割、语音识别等处理。如下所示:
import speech_recognition as sr
# 创建语音识别器对象
r = sr.Recognizer()
# 从 WAV 文件中读取声音数据,进行识别
with sr.AudioFile("output.wav") as source:
# 将音频数据加载到识别器
audio = r.record(source)
# 对数据进行语音识别
text = r.recognize_google(audio, language="zh-CN")
print(text)
这段代码会读取 output.wav
文件,并对其中的音频数据进行语音识别,并输出识别结果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 通过麦克风录音 生成wav文件的方法 - Python技术站