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安装Scrapy图文教程
Aug 14 Python
django上传图片并生成缩略图方法示例
Dec 11 Python
python设定并获取socket超时时间的方法
Jan 12 Python
Python中单线程、多线程和多进程的效率对比实验实例
May 14 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
Aug 22 Python
关于sys.stdout和print的区别详解
Dec 05 Python
python递归调用中的坑:打印有值, 返回却None
Mar 16 Python
Jupyter Notebook打开任意文件夹操作
Apr 14 Python
Pandas实现一列数据分隔为两列
May 18 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
Jun 23 Python
Python自动发送和收取邮件的方法
Aug 12 Python
用Python远程登陆服务器的步骤
Apr 16 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 不同编码下的字符串长度区分
2009/09/26 PHP
php 仿Comsenz安装效果代码打包提供下载
2010/05/09 PHP
PHP批量生成静态HTML的简单原理和方法
2014/04/20 PHP
php实现递归抓取网页类实例
2015/04/03 PHP
php实现对象克隆的方法
2015/06/20 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
js获取url中的参数且参数为中文时通过js解码
2014/03/19 Javascript
使用AngularJS来实现HTML页面嵌套的方法
2015/06/17 Javascript
JavaScript实现LI列表数据绑定的方法
2015/08/04 Javascript
javascript动画之磁性吸附效果篇
2016/12/09 Javascript
jQuery事件详解
2017/02/23 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
2017/04/07 Javascript
ionic实现下拉刷新载入数据功能
2017/05/11 Javascript
webpack配置之后端渲染详解
2017/10/26 Javascript
解决v-for中使用v-if或者v-bind:class失效的问题
2018/09/25 Javascript
Vue如何提升首屏加载速度实例解析
2020/06/25 Javascript
分析Python中设计模式之Decorator装饰器模式的要点
2016/03/02 Python
Python中的列表生成式与生成器学习教程
2016/03/13 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
2018/03/14 Python
Python实现的端口扫描功能示例
2018/04/08 Python
python实现停车管理系统
2018/11/30 Python
Python3.5 Pandas模块之Series用法实例分析
2019/04/23 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
Python列表与元组的异同详解
2019/07/02 Python
简单了解python 邮件模块的使用方法
2019/07/24 Python
找到不普通的东西:Bonanza
2016/10/20 全球购物
EJB实例的生命周期
2016/10/28 面试题
优秀毕业生自荐信范文
2014/01/01 职场文书
节能减排倡议书
2014/04/15 职场文书
销售人员求职信
2014/07/22 职场文书
比赛主持人开场白
2015/05/29 职场文书
钱学森电影观后感
2015/06/04 职场文书
新闻稿标题
2015/07/18 职场文书
经典哲理警句:志不真则心不热,心不热则功不贤
2019/11/14 职场文书
pytorch 实现变分自动编码器的操作
2021/05/24 Python