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 ldap实现登录实例代码
Sep 30 Python
Python 3.x 连接数据库示例(pymysql 方式)
Jan 19 Python
Python分析学校四六级过关情况
Nov 22 Python
python 遍历目录(包括子目录)下所有文件的实例
Jul 11 Python
Python实现Dijkstra算法
Oct 17 Python
numpy 计算两个数组重复程度的方法
Nov 07 Python
Python对excel文档的操作方法详解
Dec 10 Python
python实现两张图片的像素融合
Feb 23 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
Jun 27 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
Aug 08 Python
使用pandas实现筛选出指定列值所对应的行
Dec 13 Python
pandas按条件筛选数据的实现
Feb 20 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 第三节 变量介绍
2012/04/28 PHP
PHP中的多行字符串传递给JavaScript的两种方法
2014/06/19 PHP
给WordPress的编辑后台添加提示框的代码实例分享
2015/12/25 PHP
php中请求url的五种方法总结
2017/07/13 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
2018/05/11 PHP
可拖动窗口,附带鼠标控制渐变透明,开启关闭功能
2006/06/26 Javascript
理解javascript中try...catch...finally
2015/12/25 Javascript
Node.js重新刷新session过期时间的方法
2016/02/04 Javascript
JavaScript学习笔记之ES6数组方法
2016/03/25 Javascript
picLazyLoad 实现图片延时加载(包含背景图片)
2016/07/21 Javascript
EasyUI 结合JS导出Excel文件的实现方法
2016/11/10 Javascript
jQuery中ajax错误调试分析
2016/12/01 Javascript
详解JavaScript的内置对象
2016/12/07 Javascript
浅谈Javascript中的Label语句
2016/12/14 Javascript
JS实现数组去重方法总结(六种方法)
2017/07/14 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
利用百度地图API获取当前位置信息的实例
2017/11/06 Javascript
详解在Vue中使用TypeScript的一些思考(实践)
2018/07/06 Javascript
解决vue 中 echart 在子组件中只显示一次的问题
2018/08/07 Javascript
使用TS来编写express服务器的方法步骤
2020/10/29 Javascript
python脚本设置超时机制系统时间的方法
2016/02/21 Python
django自带的server 让外网主机访问方法
2018/05/14 Python
python安装numpy和pandas的方法步骤
2019/05/27 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
2019/07/22 Python
Python: 传递列表副本方式
2019/12/19 Python
Django+boostrap 美化admin后台的操作
2020/03/11 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
2020/03/19 Python
Python 带星号(* 或 **)的函数参数详解
2021/02/23 Python
杭州联环马网络笔试题面试题
2013/08/04 面试题
黄河象教学反思
2014/02/10 职场文书
2014年五一活动策划方案
2014/03/15 职场文书
银行竞聘演讲稿范文
2014/04/23 职场文书
商业计算机应用专业自荐书
2014/06/09 职场文书
护理专业自我评价
2015/03/11 职场文书
老舍《猫》教学反思
2016/02/17 职场文书