使用 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' 结尾。

Python 实时录音降噪工具:GUI 界面,保存音频

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

免费AI点我,无需注册和登录