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程序语言快速上手教程
Jul 18 Python
Python实现的几个常用排序算法实例
Jun 16 Python
Python使用正则匹配实现抓图代码分享
Apr 02 Python
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
Sep 19 Python
django允许外部访问的实例讲解
May 14 Python
简单了解python元组tuple相关原理
Dec 02 Python
pytorch的梯度计算以及backward方法详解
Jan 10 Python
python中id函数运行方式
Jul 03 Python
Pycharm自带Git实现版本管理的方法步骤
Sep 18 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
Oct 15 Python
python将图片转为矢量图的方法步骤
Mar 30 Python
python通过opencv调用摄像头操作实例分析
Jun 07 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学习笔记之 函数声明
2011/06/09 PHP
php如何调用webservice应用介绍
2012/11/24 PHP
使用PHP实现Mysql读写分离
2013/06/28 PHP
Yii入门教程之目录结构、入口文件及路由设置
2014/11/25 PHP
PHP开发APP端微信支付功能
2017/02/17 PHP
php7 安装yar 生成docker镜像
2017/05/09 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
PHP中rename()函数的妙用讲解
2019/02/28 PHP
在textarea文本域中显示HTML代码的方法
2007/03/06 Javascript
基于jQuery实现的QQ表情插件
2015/08/25 Javascript
浅谈js的异步执行
2016/10/18 Javascript
Angular JS数据的双向绑定详解及实例
2016/12/31 Javascript
深入解析js轮播插件核心代码的实现过程
2017/04/14 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
解决webpack dev-server不能匹配post请求的问题
2018/08/24 Javascript
小程序组件之自定义顶部导航实例
2019/06/12 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
2020/01/12 Javascript
JavaScript图片旋转效果实现方法详解
2020/06/28 Javascript
vue组件添加事件@click.native操作
2020/10/30 Javascript
Python原始字符串(raw strings)用法实例
2014/10/13 Python
Python+matplotlib+numpy绘制精美的条形统计图
2018/01/02 Python
python实现拓扑排序的基本教程
2018/03/11 Python
python实现linux下抓包并存库功能
2018/07/18 Python
python将txt文件读取为字典的示例
2018/12/22 Python
Pandas之ReIndex重新索引的实现
2019/06/25 Python
python中列表的切片与修改知识点总结
2019/07/23 Python
西班牙国家航空官方网站:Iberia
2017/11/16 全球购物
波兰购物网站:MALL.PL
2019/05/01 全球购物
美国帽子俱乐部商店:Hat Club
2019/07/05 全球购物
大班上学期幼儿评语
2014/04/30 职场文书
会议接待欢迎词范文
2015/01/26 职场文书
2015小学教师年度考核工作总结
2015/05/12 职场文书
活动简报范文
2015/07/22 职场文书
医院病假条范文
2015/08/17 职场文书
人力资源部工作计划
2019/05/14 职场文书