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多线程下载文件的方法
Jul 10 Python
约瑟夫问题的Python和C++求解方法
Aug 20 Python
Python实现文件复制删除
Apr 19 Python
Python的Django中将文件上传至七牛云存储的代码分享
Jun 03 Python
python使用arcpy.mapping模块批量出图
Mar 06 Python
对pandas将dataframe中某列按照条件赋值的实例讲解
Nov 29 Python
调用其他python脚本文件里面的类和方法过程解析
Nov 15 Python
pytorch::Dataloader中的迭代器和生成器应用详解
Jan 03 Python
在django中使用apscheduler 执行计划任务的实现方法
Feb 11 Python
python实现提取COCO,VOC数据集中特定的类
Mar 10 Python
Python生成并下载文件后端代码实例
Aug 31 Python
使用python将微信image下.dat文件解密为.png的方法
Nov 30 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+mysqli批量查询多张表数据的方法
2015/01/29 PHP
php与python实现的线程池多线程爬虫功能示例
2016/10/12 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
javascript学习笔记(九) js对象 设计模式
2012/06/19 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
2013/07/15 Javascript
最短的IE判断var ie=!-[1,]分析
2014/05/28 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
javascript字符串与数组转换汇总
2015/05/26 Javascript
JavaScript实现简单的拖动效果
2016/07/02 Javascript
angularJs关于指令的一些冷门属性详解
2016/10/24 Javascript
整理一下常见的IE错误
2016/11/18 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
2017/07/18 Javascript
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
layer弹出子iframe层父子页面传值的实现方法
2018/11/22 Javascript
[51:53]完美世界DOTA2联赛决赛日 Inki vs LBZS 第二场 11.08
2020/11/10 DOTA
分享Python字符串关键点
2015/12/13 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
解决Python selenium get页面很慢时的问题
2019/01/30 Python
Django 日志配置按日期滚动的方法
2019/01/31 Python
python3对拉勾数据进行可视化分析的方法详解
2019/04/03 Python
sklearn-SVC实现与类参数详解
2019/12/10 Python
Python random模块制作简易的四位数验证码
2020/02/01 Python
解析python 类方法、对象方法、静态方法
2020/08/15 Python
使用Python提取文本中含有特定字符串的方法示例
2020/12/09 Python
CSS3实现点击放大的动画实例代码
2017/02/27 HTML / CSS
番木瓜健康和保健产品第一大制造商:Herbal Papaya
2017/04/25 全球购物
台湾生鲜宅配:大口市集
2017/10/14 全球购物
Vrbo英国:预订度假屋
2020/08/19 全球购物
创业计划书中包含的9个方面
2013/12/26 职场文书
业务员简历自我评价
2014/03/06 职场文书
帮一个朋友写的求职信
2014/08/09 职场文书
2014年审计人员工作总结
2014/12/19 职场文书
入党政审材料范文
2014/12/24 职场文书
OpenCV-Python模板匹配人眼的实例
2021/06/08 Python
Spring整合Mybatis的全过程
2021/06/28 Java/Android