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实现探测socket和web服务示例
Mar 28 Python
200行自定义python异步非阻塞Web框架
Mar 15 Python
Python实现随机选择元素功能
Sep 14 Python
Python中pillow知识点学习
Apr 30 Python
Python DataFrame.groupby()聚合函数,分组级运算
Sep 18 Python
使用Selenium破解新浪微博的四宫格验证码
Oct 19 Python
Python多进程fork()函数详解
Feb 22 Python
学习和使用python的13个理由
Jul 30 Python
Python如何把字典写入到CSV文件的方法示例
Aug 23 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
Dec 18 Python
django学习之ajax post传参的2种格式实例
May 14 Python
Python3中最常用的5种线程锁实例总结
Jul 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+mysql保存和输出文件
2006/10/09 PHP
php 操作调试的方法
2012/07/12 PHP
php操作memcache缓存方法分享
2015/06/03 PHP
document.documentElement && document.documentElement.scrollTop
2007/12/01 Javascript
看了就知道什么是JSON
2007/12/09 Javascript
模仿JQuery.extend函数扩展自己对象的js代码
2009/12/09 Javascript
Js 冒泡事件阻止实现代码
2013/01/27 Javascript
JavaScript 学习笔记之变量及其作用域
2015/01/14 Javascript
tuzhu_req.js 实现仿百度图片首页效果
2015/08/11 Javascript
Bootstrap三种表单布局的使用方法
2016/06/21 Javascript
深入剖析JavaScript面向对象编程
2016/07/12 Javascript
js实现HashTable(哈希表)的实例分析
2016/11/21 Javascript
详解Js模板引擎(TrimPath)
2016/11/22 Javascript
jQuery插件版本冲突的处理方法分析
2017/01/16 Javascript
Javascript读写cookie的实例源码
2019/03/16 Javascript
详解JWT token心得与使用实例
2019/08/02 Javascript
原生js实现的观察者和订阅者模式简单示例
2020/04/18 Javascript
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
[57:53]Secret vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
编写Python脚本批量下载DesktopNexus壁纸的教程
2015/05/06 Python
python利用paramiko连接远程服务器执行命令的方法
2017/10/16 Python
python 进程 进程池 进程间通信实现解析
2019/08/23 Python
Python 下载及安装详细步骤
2019/11/04 Python
新加坡交友网站:be2新加坡
2019/04/10 全球购物
面向对象编程是如何提高软件开发水平的
2014/05/06 面试题
数据库设计的包括哪两种,请分别进行说明
2016/07/15 面试题
学术会议主持词
2014/03/17 职场文书
石油工程专业毕业生求职信
2014/04/13 职场文书
家长对老师的评语
2014/04/18 职场文书
副处级干部考察材料
2014/05/17 职场文书
车辆工程专业求职信
2014/06/14 职场文书
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
房屋租赁协议书
2014/10/18 职场文书
Apache Calcite 实现方言转换的代码
2021/04/24 Servers
详解Vue的sync修饰符
2021/05/15 Vue.js
Java8 CompletableFuture 异步回调
2022/04/28 Java/Android