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 相关文章推荐
python3.3实现乘法表示例
Feb 07 Python
Python实现的Kmeans++算法实例
Apr 26 Python
Windows和Linux下使用Python访问SqlServer的方法介绍
Mar 10 Python
在Python中使用第三方模块的教程
Apr 27 Python
Python使用ConfigParser模块操作配置文件的方法
Jun 29 Python
Python socket套接字实现C/S模式远程命令执行功能案例
Jul 06 Python
python+opencv实现车牌定位功能(实例代码)
Dec 24 Python
pytorch 获取tensor维度信息示例
Jan 03 Python
Python logging模块写入中文出现乱码
May 21 Python
python 偷懒技巧——使用 keyboard 录制键盘事件
Sep 21 Python
pytorch 移动端部署之helloworld的使用
Oct 30 Python
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
Jun 11 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
linux下使用crontab实现定时PHP计划任务失败的原因分析
2014/07/05 PHP
PHP实现ftp上传文件示例
2014/08/21 PHP
php转换颜色为其反色的方法
2015/04/27 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
php取出数组单个值的方法
2018/03/12 PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
2018/10/10 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
基于jquery的inputlimiter 实现字数限制功能
2010/05/30 Javascript
jquery常用技巧及常用方法列表集合
2011/04/06 Javascript
javascript ajax的5种状态介绍
2014/08/18 Javascript
JavaScript中的6种运算符总结
2014/10/16 Javascript
jQuery表单域选择器用法分析
2015/02/10 Javascript
基于JavaScript如何制作遮罩层对话框
2016/01/26 Javascript
js实现tab切换效果
2017/02/16 Javascript
vue中rem的配置的方法示例
2018/08/30 Javascript
angularjs中判断ng-repeat是否迭代完的实例
2018/09/12 Javascript
小程序多图列表实现性能优化的方法步骤
2019/05/28 Javascript
vue 实现模糊检索并根据其他字符的首字母顺序排列
2019/09/19 Javascript
解决vue自定义全局消息框组件问题
2019/11/22 Javascript
利用python实现简单的循环购物车功能示例代码
2017/07/05 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
2019/08/20 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
2019/09/18 Python
Python time库基本使用方法分析
2019/12/13 Python
彻底搞懂 python 中文乱码问题(深入分析)
2020/02/28 Python
pandas中ix的使用详细讲解
2020/03/09 Python
Jupyter notebook快速入门教程(推荐)
2020/05/18 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
Python基于execjs运行js过程解析
2020/11/27 Python
python Matplotlib基础--如何添加文本和标注
2021/01/26 Python
《小小竹排画中游》教学反思
2014/02/26 职场文书
函授毕业生自我鉴定范文
2014/03/25 职场文书
工伤事故证明
2014/10/20 职场文书
幼儿园小朋友毕业感言
2015/07/30 职场文书
靠谱准确的求职信
2019/04/02 职场文书