python实现录音功能(可随时停止录音)


Posted in Python onOctober 26, 2020

本文实例为大家分享了python实现录音功能的具体代码,供大家参考,具体内容如下

# -*- coding: utf-8 -*-
 
import pyaudio
import time
import threading
import wave
 
class Recorder():
  def __init__(self, chunk=1024, channels=1, rate=64000):
    self.CHUNK = chunk
    self.FORMAT = pyaudio.paInt16
    self.CHANNELS = channels
    self.RATE = rate
    self._running = True
    self._frames = []
  def start(self):
    threading._start_new_thread(self.__recording, ())
  def __recording(self):
    self._running = True
    self._frames = []
    p = pyaudio.PyAudio()
    stream = p.open(format=self.FORMAT,
            channels=self.CHANNELS,
            rate=self.RATE,
            input=True,
            frames_per_buffer=self.CHUNK)
    while(self._running):
      data = stream.read(self.CHUNK)
      self._frames.append(data)
 
    stream.stop_stream()
    stream.close()
    p.terminate()
 
  def stop(self):
    self._running = False
 
  def save(self, filename):
    
    p = pyaudio.PyAudio()
    if not filename.endswith(".wav"):
      filename = filename + ".wav"
    wf = wave.open(filename, 'wb')
    wf.setnchannels(self.CHANNELS)
    wf.setsampwidth(p.get_sample_size(self.FORMAT))
    wf.setframerate(self.RATE)
    wf.writeframes(b''.join(self._frames))
    wf.close()
    print("Saved")
 
if __name__ == "__main__":
  
  for i in range(1,4):
    a = int(input('请输入相应数字开始:'))
    if a == 1:      
      rec = Recorder()
      begin = time.time()
      print("Start recording")
      rec.start()
      b = int(input('请输入相应数字停止:'))
      if b == 2:
        print("Stop recording")
        rec.stop()
        fina = time.time()
        t = fina - begin
        print('录音时间为%ds'%t)
        rec.save("1_%d.wav"%i)

本人在尝试语音识别领域的研究,欢迎一起探讨。

更多精彩python学习专题欢迎点击学习:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现对一个完整url进行分割的方法
Apr 29 Python
在Python中编写数据库模块的教程
Apr 29 Python
python删除列表内容
Aug 04 Python
利用python解决mysql视图导入导出依赖的问题
Dec 17 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
Feb 18 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
May 24 Python
深入理解Django自定义信号(signals)
Oct 15 Python
python事件驱动event实现详解
Nov 21 Python
python实现的爬取电影下载链接功能示例
Aug 26 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
Mar 05 Python
python 基于opencv 绘制图像轮廓
Dec 11 Python
如何用python写个模板引擎
Jan 14 Python
Python用dilb提取照片上人脸的示例
Oct 26 #Python
python用tkinter实现一个gui的翻译工具
Oct 26 #Python
Docker如何部署Python项目的实现详解
Oct 26 #Python
python Gabor滤波器讲解
Oct 26 #Python
详解基于python的图像Gabor变换及特征提取
Oct 26 #Python
多个版本的python共存时使用pip的正确做法
Oct 26 #Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
Oct 26 #Python
You might like
PHP爆绝对路径方法收集整理
2012/09/17 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
2014/06/23 PHP
Linux系统递归生成目录中文件的md5的方法
2015/06/29 PHP
PHP如何使用Memcached
2016/04/05 PHP
Laravel5.1自定义500错误页面示例
2016/10/09 PHP
phpinfo的知识点总结
2019/10/10 PHP
Mootools 1.2 手风琴(Accordion)教程
2009/09/15 Javascript
file控件选择上传文件确定后触发的js事件是哪个
2014/03/17 Javascript
设置jQueryUI DatePicker默认语言为中文
2016/06/04 Javascript
js事件冒泡、事件捕获和阻止默认事件详解
2016/08/04 Javascript
jQuery EasyUI Tab 选项卡问题小结
2016/08/16 Javascript
JS中常用的正则表达式
2016/09/29 Javascript
Bootstrap字体图标无法正常显示的解决方法
2016/10/08 Javascript
JS实现的简易拖放效果示例
2016/12/29 Javascript
浅谈vue的props,data,computed变化对组件更新的影响
2018/01/16 Javascript
vue-router命名视图的使用讲解
2019/01/19 Javascript
vue-router 路由传参用法实例分析
2020/03/06 Javascript
vue实现前端分页完整代码
2020/06/17 Javascript
Python内置函数delattr的具体用法
2017/11/23 Python
Python中单例模式总结
2018/02/20 Python
python读取和保存视频文件
2018/04/16 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
2019/08/12 Python
Tensorflow使用Anaconda、pycharm安装记录
2020/07/29 Python
德国婴儿推车和儿童安全座椅商店:BABYSHOP
2016/09/01 全球购物
智能钱包:Ekster
2019/11/21 全球购物
几个判断型的面试题
2012/07/03 面试题
现金会计岗位职责
2013/12/05 职场文书
青年文明号事迹材料
2014/01/18 职场文书
幼儿教师培训感言
2014/03/08 职场文书
党的群众路线教育学习材料
2014/05/12 职场文书
计算机专业毕业生自荐书
2014/06/02 职场文书
股东出资证明书范例
2014/10/04 职场文书
2014年学校德育工作总结
2014/12/05 职场文书
TensorFlow的自动求导原理分析
2021/05/26 Python
js实现自动锁屏功能
2021/06/02 Javascript
关于pytest结合csv模块实现csv格式的数据驱动问题
2022/05/30 Python