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 相关文章推荐
Python3读取文件常用方法实例分析
May 22 Python
Python读取键盘输入的2种方法
Jun 16 Python
Python实现的最近最少使用算法
Jul 10 Python
python+pandas生成指定日期和重采样的方法
Apr 11 Python
解决python3 urllib 链接中有中文的问题
Jul 16 Python
python梯度下降法的简单示例
Aug 31 Python
Python读取stdin方法实例
May 24 Python
python 循环数据赋值实例
Dec 02 Python
python 画3维轨迹图并进行比较的实例
Dec 06 Python
python批量替换文件名中的共同字符实例
Mar 05 Python
浅谈anaconda python 版本对应关系
Oct 07 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
Nov 25 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与SQL注入攻击防范小技巧
2011/09/16 PHP
VIM中设置php自动缩进为4个空格的方法详解
2013/06/14 PHP
PHP小技巧之函数重载
2014/06/02 PHP
php实现遍历目录并删除指定文件中指定内容
2015/01/21 PHP
PHP MPDF中文乱码的解决方式
2015/12/08 PHP
PHP MySql增删改查的简单实例
2016/06/21 PHP
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
jQuery动态改变图片显示大小(修改版)的实现思路及代码
2013/12/24 Javascript
JavaScript中合并数组的N种方法
2014/09/16 Javascript
JS实现同时搜索百度和必应的方法
2015/01/27 Javascript
JS实现三级折叠菜单特效,其它级可自动收缩
2015/08/06 Javascript
基于JavaScript创建动态Dom
2015/12/08 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
2016/07/20 Javascript
全屏滚动插件fullPage.js使用实例解析
2016/10/21 Javascript
JS获取多维数组中相同键的值实现方法示例
2017/01/06 Javascript
JS实现显示当前日期的实例代码
2018/07/03 Javascript
浅谈JavaScript 代码简洁之道
2019/01/09 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
2020/06/01 Javascript
解决ant Design中Select设置initialValue时的大坑
2020/10/29 Javascript
在实例中重学JavaScript事件循环
2020/12/03 Javascript
[36:33]Ti4 循环赛第四日 附加赛NEWBEE vs Mouz
2014/07/13 DOTA
[01:51]2014DOTA2国际邀请赛 这个赛场没有失败者VGTi5再见
2014/07/23 DOTA
实例探究Python以并发方式编写高性能端口扫描器的方法
2016/06/14 Python
python TCP Socket的粘包和分包的处理详解
2018/02/09 Python
Python编程在flask中模拟进行Restful的CRUD操作
2018/12/28 Python
详解解决Python memory error的问题(四种解决方案)
2019/08/08 Python
基于python二叉树的构造和打印例子
2019/08/09 Python
PyTorch在Windows环境搭建的方法步骤
2020/05/12 Python
夜大自我鉴定
2013/10/31 职场文书
绝对经典成功的大学生推荐信
2013/11/08 职场文书
称象教学反思
2014/02/03 职场文书
幼儿园教师获奖感言
2014/03/11 职场文书
幼儿园家长寄语
2014/04/02 职场文书
委托培训协议书
2014/11/17 职场文书
MySQL如何修改字段类型和字段长度
2022/06/10 MySQL