Python 实时录音降噪工具:GUI 界面,保存音频
使用 Python 语言中的 PyAudio 库来实现实时录音,并使用 Python 中的 Tkinter 库来实现 GUI 界面。同时,可以使用 Python 中的音频处理库如 pydub 和 librosa 来进行降噪处理。
以下是一个简单的示例代码:
import pyaudio
import wave
import tkinter as tk
from tkinter import filedialog
from pydub import AudioSegment
import librosa
# 初始化 PyAudio
audio = pyaudio.PyAudio()
# 定义音频参数
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
CHUNK = 1024
# 定义录音函数
def record():
# 打开音频流
stream = audio.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK)
# 创建一个空的音频片段
frames = []
# 录音
while True:
data = stream.read(CHUNK)
frames.append(data)
# 更新 GUI 界面上的录音时间
time_text.set('{:.2f}s'.format(len(frames) / RATE))
# 如果停止录音,则退出循环
if not is_recording.get():
break
# 停止音频流
stream.stop_stream()
stream.close()
# 保存录音
save_file = filedialog.asksaveasfilename(defaultextension=".wav")
if save_file:
wf = wave.open(save_file, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(audio.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
# 加载录音文件
audio_file = AudioSegment.from_wav(save_file)
# 降噪处理
noise_reduced_audio = librosa.effects.reduce_noise(audio_file.get_array_of_samples(), audio_file.frame_rate)
# 保存降噪后的音频
save_file = save_file[:-4] + '_noise_reduced.wav'
librosa.output.write_wav(save_file, noise_reduced_audio, audio_file.frame_rate)
# 创建 GUI 界面
root = tk.Tk()
root.title('录音机')
# 创建录音时间标签
time_text = tk.StringVar()
time_text.set('0.00s')
time_label = tk.Label(root, textvariable=time_text, font=('Arial', 24))
time_label.pack()
# 创建录音按钮
is_recording = tk.BooleanVar()
is_recording.set(False)
record_button = tk.Button(root, text='录音', font=('Arial', 24), command=lambda: is_recording.set(True))
record_button.pack()
# 创建停止录音按钮
stop_button = tk.Button(root, text='停止', font=('Arial', 24), command=lambda: is_recording.set(False))
stop_button.pack()
# 创建保存按钮
save_button = tk.Button(root, text='保存', font=('Arial', 24), command=record)
save_button.pack()
root.mainloop()
# 关闭 PyAudio
audio.terminate()
该代码将创建一个简单的 GUI 界面,包含录音时间、录音按钮、停止按钮和保存按钮。点击录音按钮开始录音,点击停止按钮停止录音,点击保存按钮将录音保存到文件并进行降噪处理。降噪后的音频文件将保存在与原始录音文件相同的目录下,文件名以 '_noise_reduced' 结尾。

原文地址: http://www.cveoy.top/t/topic/okE1 著作权归作者所有。请勿转载和采集!