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学习数据结构实例代码
May 11 Python
Python获取当前路径实现代码
May 08 Python
Python实现KNN邻近算法
Jan 28 Python
Django的用户模块与权限系统的示例代码
Jul 24 Python
python中用logging实现日志滚动和过期日志删除功能
Aug 20 Python
Python3.7安装keras和TensorFlow的教程图解
Jun 18 Python
python实现简单银行管理系统
Oct 25 Python
如何基于python实现归一化处理
Jan 20 Python
TensorBoard 计算图的可视化实现
Feb 15 Python
Pytest框架之fixture的详细使用教程
Apr 07 Python
Django配置Bootstrap, js实现过程详解
Oct 13 Python
python从ftp获取文件并下载到本地
Dec 05 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
了解咖啡雨林联盟认证 什么是雨林认证 雨林认证是什么意思
2021/03/05 新手入门
提高PHP编程效率的53个要点(经验小结)
2010/09/04 PHP
php的数组与字符串的转换函数整理汇总
2013/07/18 PHP
日常整理PHP中简单的图形处理(经典)
2015/10/26 PHP
PHP中for循环与foreach的区别
2017/03/06 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
IE与Firefox下javascript getyear年份的兼容性写法
2007/12/20 Javascript
js内置对象 学习笔记
2011/08/01 Javascript
用js来刷新当前页面保留参数的具体实现
2013/12/23 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
jquery退出each循环的写法
2014/02/26 Javascript
JS根据年月获得当月天数的实现代码
2014/07/03 Javascript
node.js中的fs.createReadStream方法使用说明
2014/12/17 Javascript
JS使用ajax从xml文件动态获取数据显示的方法
2015/03/24 Javascript
javascript实现Table排序的方法
2015/05/15 Javascript
JQuery用户名校验的具体实现
2016/03/18 Javascript
基于Bootstrap使用jQuery实现输入框组input-group的添加与删除
2016/05/03 Javascript
Vue.js原理分析之observer模块详解
2017/02/17 Javascript
实例学习JavaScript读取和写入cookie
2018/01/29 Javascript
微信小程序实现图片预览功能
2018/01/31 Javascript
微信小程序云开发 搭建一个管理小程序
2019/05/17 Javascript
node实现socket链接与GPRS进行通信的方法
2019/05/20 Javascript
vue 翻页组件vue-flip-page效果
2020/02/05 Javascript
vue中destroyed方法的使用说明
2020/07/21 Javascript
python中zip和unzip数据的方法
2015/05/27 Python
浅谈使用Python变量时要避免的3个错误
2017/10/30 Python
python环境路径配置以及命令行运行脚本
2019/04/02 Python
对python中GUI,Label和Button的实例详解
2019/06/27 Python
Django实现列表页商品数据返回教程
2020/04/03 Python
在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
2020/08/07 Python
Python图像识别+KNN求解数独的实现
2020/11/13 Python
有abstract方法的类一定要用abstract修饰吗
2016/03/14 面试题
员工培训邀请函
2014/01/11 职场文书
护士毕业生自我鉴定
2014/02/08 职场文书
委托书的写法
2014/09/16 职场文书
接待员岗位职责范本
2015/04/15 职场文书