当前位置: 首页 > news >正文

【python实用小脚本系列】用 Python 打造你的专属录音机,随时随地记录声音!

嘿,小伙伴们!今天我来给大家介绍一个超实用的 Python 小工具——一个能帮你随时随地录音的“声音捕手”!是不是听起来很酷?再也不用担心错过重要的声音啦!接下来,我带大家看看这个神奇的代码是怎么工作的,还能怎么玩出更多花样!

第一步:揭秘核心代码,看看它是怎么“捕捉声音”的

这个工具的核心功能是通过麦克风录制声音,并保存为音频文件。听起来是不是有点像魔法?其实,它背后的工作原理非常有趣!接下来,我们来看看它是怎么实现的。

1. 初始化录音参数:告诉程序怎么录音
class App():chunk = 1024  # 每次读取的音频数据块大小sample_format = pyaudio.paInt16  # 音频格式channels = 2  # 音频通道数fs = 44100  # 采样率

这段代码的作用是设置录音的基本参数。chunk 是每次读取的音频数据块大小,sample_format 是音频格式(这里用的是 16 位整型),channels 是音频通道数(立体声是 2),fs 是采样率(44100 是 CD 音质的标准采样率)。

2. 创建图形界面:让程序有个“脸”
self.button1 = tk.Button(main, text='Start', width=6, command=self.startrecording)
self.button2 = tk.Button(main, text='Stop', width=6, command=self.stoprecording)
self.button1.pack()
self.button2.pack()

这段代码的作用是创建一个简单的图形界面,有两个按钮:“开始”和“停止”。点击“开始”按钮开始录音,点击“停止”按钮停止录音并保存文件。

3. 开始录音:让程序“听”声音
def startrecording(self):self.p = pyaudio.PyAudio()  # 初始化 PyAudioself.stream = self.p.open(format=self.sample_format, channels=self.channels, rate=self.fs, input=True)self.isrecording = Trueself.button1['state'] = 'disable'  # 禁用“开始”按钮print('Recording')t = threading.Thread(target=self.record)  # 创建一个线程用于录音t.start()

这段代码的作用是初始化录音设备,并开始录音。pyaudio.PyAudio() 会打开音频设备,self.stream.read(self.chunk) 会不断读取音频数据并存储到 self.frames 列表中。

4. 停止录音并保存文件:把声音“存”下来
def stoprecording(self):self.isrecording = Falseprint('Recording Completed')self.filename = input('Name the file?')  # 提示用户输入文件名self.filename = self.filename + ".wav"wf = wave.open(self.filename, 'wb')  # 打开文件保存音频wf.setnchannels(self.channels)wf.setsampwidth(self.p.get_sample_size(self.sample_format))wf.setframerate(self.fs)wf.writeframes(b''.join(self.frames))  # 写入音频数据wf.close()main.destroy()

这段代码的作用是停止录音,并把录制的音频数据保存为 .wav 文件。用户可以输入文件名,程序会自动添加 .wav 后缀。

第二步:这个代码能用来干啥?应用场景大揭秘!

这个工具不仅仅是一个简单的“录音机”,它的应用场景其实非常广泛!以下是一些有趣的用法:

  1. 会议记录:录制会议内容,方便事后整理。
  2. 学习笔记:录制老师的讲解,方便复习。
  3. 创意记录:随时随地记录灵感,方便后续创作。
  4. 语音备忘录:录制语音备忘录,方便提醒自己重要事项。

总之,只要你需要记录声音,这个工具都能帮你轻松搞定!

第三步:扩展玩法,让工具更强大!

接下来,我来教大家两个进阶玩法,让你的工具变得更智能、更有趣!

扩展 1:自动保存文件名——不用手动输入文件名

我们可以扩展代码,让程序自动保存文件名,不用每次都手动输入。

from datetime import datetimedef stoprecording(self):self.isrecording = Falseprint('Recording Completed')timestamp = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")  # 获取当前时间戳self.filename = f"Recording_{timestamp}.wav"  # 自动生成文件名wf = wave.open(self.filename, 'wb')wf.setnchannels(self.channels)wf.setsampwidth(self.p.get_sample_size(self.sample_format))wf.setframerate(self.fs)wf.writeframes(b''.join(self.frames))wf.close()main.destroy()

这段代码会根据当前时间生成文件名,比如 Recording_2024-04-12_15-30-45.wav,方便你快速找到文件。

扩展 2:实时显示录音状态——看到录音进度

我们可以让程序实时显示录音状态,比如录音时长。

import timedef record(self):start_time = time.time()  # 记录开始时间while self.isrecording:data = self.stream.read(self.chunk)self.frames.append(data)elapsed_time = time.time() - start_time  # 计算已录音时间print(f"Recording... {elapsed_time:.2f} seconds", end="\r")  # 实时显示录音时长

这段代码会在录音时实时显示已录音的时长,方便你了解录音进度。

总结:录音机,记录声音的好帮手!

好了,今天的分享就到这里啦!是不是觉得这个工具超级实用?它不仅能帮你录制声音,还能通过简单的扩展,实现更多有趣的功能。有了它,你的学习和生活会变得更加轻松和高效。

如果你也想拥有这样一个“声音捕手”,那就赶紧动手试试吧!相信我,有了它,你的生活会变得更加丰富多彩。

最后,别忘了点赞和分享,让更多人知道这个超实用的 Python 小工具!我们下次再见!

需要完整的源码,请在评论区留言,或私信我。

相关文章:

  • Qt中 Key_Return 与 Key_Enter
  • 图论--DFS搜索图/树
  • DP 16bit位宽数据扰码实现和仿真
  • 淘宝大数据接口解析:商品类目 / 价格 / 销量多维数据采集与存储方案
  • 软件测试——BUG概念
  • Uniapp权限申请优化方案
  • Browser-use 是连接你的AI代理与浏览器的最简单方式
  • 什么是跨域问题以及其解决方案
  • mac上面使用zip命令压缩一劳永逸
  • 逆周期中的“深潜者”样本,解码康佳“智造”破局密码
  • Spark-SQL(二)
  • 轻量级Python IDE使用(五)——条件分支
  • STM32F103_HAL库+寄存器学习笔记15 - 梳理CAN发送失败时,涉及哪些寄存器
  • Linux:Ext系列文件系统
  • Python网络爬虫设计(一)
  • 牛客月赛114
  • DDS函数信号发生器设计
  • Redis之RedLock算法以及底层原理
  • YOLOv2学习笔记
  • 实战指南:封装Whisper为FastAPI接口并实现高并发处理-附整合包
  • “6+2”小复式追加票!松江购彩者擒大乐透1672万头奖
  • 广西气象干旱面积97.5%,影响人畜饮水、农业生产
  • 延安市委副书记马月逢已任榆林市委副书记、市政府党组书记
  • 特写|为何这么多人喜欢上海半马,答案藏在他们的笑容里
  • “云南舞蹈大家跳”暨牟定“三月会”下周举行,城际公交免票
  • 北京:义务教育阶段入学将积极为多孩家庭长幼随学创造条件