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 相关文章推荐
Django1.3添加app提示模块不存在的解决方法
Aug 26 Python
Python使用自带的ConfigParser模块读写ini配置文件
Jun 26 Python
详解Python 模拟实现生产者消费者模式的实例
Aug 10 Python
Python实现PS滤镜的旋转模糊功能示例
Jan 20 Python
Python调用C++,通过Pybind11制作Python接口
Oct 16 Python
python查询文件夹下excel的sheet名代码实例
Apr 02 Python
django2笔记之路由path语法的实现
Jul 17 Python
通过python3实现投票功能代码实例
Sep 26 Python
结束运行python的方法
Jun 16 Python
10个python爬虫入门实例(小结)
Nov 01 Python
使用pytorch实现线性回归
Apr 11 Python
利用Python读取微信朋友圈的多种方法总结
Aug 23 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
那些年我们错过的魔术方法(Magic Methods)
2014/01/14 PHP
java微信开发之上传下载多媒体文件
2016/06/24 PHP
ThinkPHP中session函数详解
2016/09/14 PHP
PHP从数组中删除元素的四种方法实例
2017/05/12 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
javascript call方法使用说明
2010/01/11 Javascript
JavaScript中yield实用简洁实现方式
2010/06/12 Javascript
Javascript 面向对象(二)封装代码
2012/05/23 Javascript
jQuery弹性滑动导航菜单实现思路及代码
2013/05/02 Javascript
用js实现输入提示(自动完成)的实例代码
2013/06/14 Javascript
js中的setInterval和setTimeout使用实例
2014/05/09 Javascript
多引号嵌套的变量命名的问题
2014/05/09 Javascript
js实现鼠标经过表格行变色的方法
2015/05/12 Javascript
微信小程序 教程之小程序配置
2016/10/17 Javascript
vue中路由验证和相应拦截的使用详解
2017/12/13 Javascript
基于IView中on-change属性的使用详解
2018/03/15 Javascript
angularJS实现不同视图同步刷新详解
2018/10/09 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
2019/03/13 Javascript
vue项目初始化到登录login页面的示例
2019/10/31 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
Python 匹配任意字符(包括换行符)的正则表达式写法
2009/10/29 Python
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
Python3 循环语句(for、while、break、range等)
2017/11/20 Python
python使用thrift教程的方法示例
2019/03/21 Python
python主线程与子线程的结束顺序实例解析
2019/12/17 Python
Python序列类型的打包和解包实例
2019/12/21 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
Python中无限循环需要什么条件
2020/05/27 Python
用python读取xlsx文件
2020/12/17 Python
企划专员岗位职责
2013/12/09 职场文书
服装设计专业毕业生求职信
2014/04/09 职场文书
活动倡议书范文
2014/05/13 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
幼儿园六一儿童节活动总结
2015/02/10 职场文书
2016毕业实习单位评语大全
2015/12/01 职场文书
html中两种获取标签内的值的方法
2022/06/16 jQuery