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 相关文章推荐
django开发之settings.py中变量的全局引用详解
Mar 29 Python
python链接oracle数据库以及数据库的增删改查实例
Jan 30 Python
python验证码识别教程之利用滴水算法分割图片
Jun 05 Python
Django如何自定义分页
Sep 25 Python
Python将8位的图片转为24位的图片实现方法
Oct 24 Python
解决Jupyter无法导入已安装的 module问题
Apr 17 Python
Python3自动生成MySQL数据字典的markdown文本的实现
May 07 Python
Python基于numpy模块实现回归预测
May 14 Python
Python生成随机验证码代码实例解析
Jun 09 Python
python 如何使用find和find_all爬虫、找文本的实现
Oct 16 Python
Python基于内置函数type创建新类型
Oct 22 Python
python实现简单猜单词游戏
Dec 24 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
jquery获取多个checkbox的值异步提交给php的方法
2015/06/24 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
laravel请求参数校验方法
2019/10/10 PHP
关于laravel 日志写入失败问题汇总
2019/10/17 PHP
Ajax,UTF-8还是GB2312 eval 还是execScript
2008/11/13 Javascript
jQuery Study Notes学习笔记 (二)
2010/08/04 Javascript
js更优雅的兼容
2010/08/12 Javascript
functional继承模式 摘自javascript:the good parts
2011/06/20 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
js事件处理程序跨浏览器解决方案
2016/03/27 Javascript
基于javascript数组实现图片轮播
2016/05/02 Javascript
javascript遍历json对象的key和任意js对象属性实例
2017/03/09 Javascript
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
2017/04/11 jQuery
使用node.js实现微信小程序实时聊天功能
2018/08/13 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
Javascript Worker子线程代码实例
2020/02/20 Javascript
Python 自动补全(vim)
2014/11/30 Python
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
2016/06/14 Python
python基于http下载视频或音频
2018/06/20 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
详解重置Django migration的常见方式
2019/02/15 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
python TK库简单应用(实时显示子进程输出)
2019/10/29 Python
Python json读写方式和字典相互转化
2020/04/18 Python
结束运行python的方法
2020/06/16 Python
python如何发送带有附件、正文为HTML的邮件
2021/02/27 Python
HTML5 Canvas的常用线条属性值总结
2016/03/17 HTML / CSS
linux面试题参考答案(8)
2016/04/19 面试题
JAVA软件工程师测试题
2014/07/25 面试题
党建工作经验交流材料
2014/05/25 职场文书
2014年乡镇民政工作总结
2014/12/02 职场文书
2015年村计划生育工作总结
2015/04/28 职场文书
德能勤绩工作总结
2015/08/11 职场文书
如何理解PHP核心特性命名空间
2021/05/28 PHP