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学习笔记_数据排序方法
May 22 Python
Python中获取网页状态码的两个方法
Nov 03 Python
状态机的概念和在Python下使用状态机的教程
Apr 11 Python
Python中time模块与datetime模块在使用中的不同之处
Nov 24 Python
《与孩子一起学编程》python自测题
May 27 Python
python脚本实现验证码识别
Jun 07 Python
对dataframe数据之间求补集的实例详解
Jan 30 Python
python3实现猜数字游戏
Dec 07 Python
Python代码生成视频的缩略图的实例讲解
Dec 22 Python
python 如何利用argparse解析命令行参数
Sep 11 Python
Python实战之疫苗研发情况可视化
May 18 Python
python工具dtreeviz决策树可视化和模型可解释性
Mar 03 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实现小型站点广告管理(修正版)
2006/10/09 PHP
PHP 读取和编写 XML
2014/11/19 PHP
用JS实现的一个include函数
2007/07/21 Javascript
input 高级限制级用法
2009/03/26 Javascript
jquery 得到当前页面高度和宽度的两个函数
2010/02/21 Javascript
js类型检查实现代码
2010/10/29 Javascript
dojo随手记 gird组件引用
2011/02/24 Javascript
Android中资源文件(非代码部分)的使用概览
2012/12/18 Javascript
jQuery和AngularJS的区别浅析
2015/01/29 Javascript
对JavaScript客户端应用编程的一些建议
2015/06/24 Javascript
JS跨域交互(jQuery+php)之jsonp使用心得
2016/07/01 Javascript
vue.js的安装方法
2017/05/12 Javascript
浅谈原型对象的常用开发模式
2017/07/22 Javascript
angularjs路由传值$routeParams详解
2020/09/05 Javascript
JS实现小球的弹性碰撞效果
2017/11/11 Javascript
微信小程序使用progress组件实现显示进度功能【附源码下载】
2017/12/12 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
three.js实现3D模型展示的示例代码
2017/12/31 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
2018/03/08 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
2018/05/13 Javascript
vue 路由嵌套高亮问题的解决方法
2018/05/17 Javascript
vue使用canvas实现移动端手写签名
2020/09/22 Javascript
Python中关键字is与==的区别简述
2014/07/31 Python
python使用pipeline批量读写redis的方法
2019/02/18 Python
面向对象学习之pygame坦克大战
2019/09/11 Python
TensorFlow实现打印每一层的输出
2020/01/21 Python
OpenCV利用python来实现图像的直方图均衡化
2020/10/21 Python
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
电子专业推荐信范文
2013/11/18 职场文书
不错的求职信范文
2014/07/20 职场文书
教师自我剖析材料(四风问题)
2014/09/30 职场文书
撤诉申请怎么写
2015/05/19 职场文书
2015年助理政工师工作总结
2015/05/26 职场文书
培训班开班主持词
2015/07/02 职场文书
2015大学生暑假调查报告
2015/07/13 职场文书
Python 详解通过Scrapy框架实现爬取CSDN全站热榜标题热词流程
2021/11/11 Python