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写的一个squid访问日志分析的小程序
Sep 17 Python
Python创建系统目录的方法
Mar 11 Python
python实现端口转发器的方法
Mar 13 Python
Python+tkinter使用40行代码实现计算器功能
Jan 30 Python
Python异常处理知识点总结
Feb 18 Python
python判断文件夹内是否存在指定后缀文件的实例
Jun 10 Python
python basemap 画出经纬度并标定的实例
Jul 09 Python
Python检查图片是否损坏及图片类型是否正确过程详解
Sep 30 Python
Python3安装pip工具的详细步骤
Oct 14 Python
详解python tkinter模块安装过程
Jan 06 Python
python将logging模块封装成单独模块并实现动态切换Level方式
May 12 Python
Python中flatten( ),matrix.A用法说明
Jul 05 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处理json时中文问题的解决方法
2011/04/12 PHP
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
2016/11/04 PHP
PHP用swoole+websocket和redis实现web一对一聊天
2019/11/05 PHP
让你的博文自动带上缩址的实现代码,方便发到微博客上
2010/12/28 Javascript
使用jQuery实现dropdownlist的联动效果(sharepoint 2007)
2011/03/30 Javascript
jQuery为iframe的body添加click事件的实现代码
2011/04/07 Javascript
JS关键字变色实现思路及代码
2013/02/21 Javascript
jquery cookie的用法总结
2013/11/18 Javascript
javascript禁用Tab键脚本实例
2013/11/22 Javascript
纯JavaScript代码实现文本比较工具
2016/02/17 Javascript
关于数据与后端进行交流匹配(点亮星星)
2016/08/03 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
js使用generator函数同步执行ajax任务
2017/09/05 Javascript
vue父组件中获取子组件中的数据(实例讲解)
2017/09/27 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
VUEJS 2.0 子组件访问/调用父组件的实例
2018/02/10 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
vue仿element实现分页器效果
2018/09/13 Javascript
小程序实现新用户判断并跳转激活的方法
2019/05/20 Javascript
微信小程序页面上下滚动效果
2020/11/18 Javascript
详解node.js 事件循环
2020/07/22 Javascript
Python删除空文件和空文件夹的方法
2015/07/14 Python
Python实现的文本编辑器功能示例
2017/06/30 Python
python 数据提取及拆分的实现代码
2019/08/26 Python
OpenCV哈里斯(Harris)角点检测的实现
2020/01/15 Python
对Tensorflow中Device实例的生成和管理详解
2020/02/04 Python
浅谈matplotlib中FigureCanvasXAgg的用法
2020/06/16 Python
Python3.9.1中使用match方法详解
2021/02/08 Python
2014年小学植树节活动方案
2014/03/02 职场文书
小学生演讲稿大全
2014/04/25 职场文书
高中语文课后反思
2014/04/27 职场文书
党员批评与自我批评材料
2014/10/14 职场文书
读后感作文评语
2014/12/25 职场文书
课程设计感想范文
2015/08/11 职场文书
关于销售人员的年终工作总结要点
2019/08/15 职场文书