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入门篇之字典
Oct 17 Python
Python实现的数据结构与算法之链表详解
Apr 22 Python
python简单实现基数排序算法
May 16 Python
解密Python中的描述符(descriptor)
Jun 03 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
Sep 18 Python
Python实现树的先序、中序、后序排序算法示例
Jun 23 Python
浅谈python中的数字类型与处理工具
Aug 02 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
Nov 23 Python
对python中不同模块(函数、类、变量)的调用详解
Jul 16 Python
Django中密码的加密、验密、解密操作
Dec 19 Python
python logging设置level失败的解决方法
Feb 19 Python
django注册用邮箱发送验证码的实现
Apr 18 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
vs中通过剪切板循环来循环粘贴不同内容
2011/04/30 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
2011/07/03 PHP
PHP 登录记住密码实现思路
2013/05/07 PHP
PHP中strtr字符串替换用法详解
2014/11/26 PHP
thinkPHP自动验证机制详解
2016/12/05 PHP
基于jquery的无刷新分页技术
2011/06/11 Javascript
js 窗口抖动示例
2013/09/04 Javascript
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
Javascript中引用示例介绍
2014/02/21 Javascript
JavaScript Window浏览器对象模型方法与属性汇总
2015/04/20 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
2015/11/06 Javascript
js中flexible.js实现淘宝弹性布局方案
2020/06/23 Javascript
AngularJS $injector 依赖注入详解
2016/09/14 Javascript
easyui导出excel无法弹出下载框的快速解决方法
2016/11/10 Javascript
实例解析jQuery中如何取消后续执行内容
2016/12/01 Javascript
详解微信小程序Radio选中样式切换
2017/07/06 Javascript
基于jquery实现五星好评
2017/11/18 jQuery
详解在React-Native中持久化redux数据
2019/05/22 Javascript
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
token 机制和实现方式
2020/12/15 Javascript
[07:08]2014DOTA2西雅图国际邀请赛 小组赛7月11日TOPPLAY
2014/07/11 DOTA
[01:44]《为梦想出发》—联想杯DOTA2完美世界全国高校联赛
2015/09/30 DOTA
Django压缩静态文件的实现方法详析
2018/08/26 Python
itchat-python搭建微信机器人(附示例)
2019/06/11 Python
python实现文件的分割与合并
2019/08/29 Python
浅析Python3 pip换源问题
2020/01/06 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
2020/03/30 Python
Python3创建Django项目的几种方法(3种)
2020/06/03 Python
python爬取股票最新数据并用excel绘制树状图的示例
2021/03/01 Python
高中军训感言500字
2014/02/24 职场文书
个人投资计划书
2014/05/01 职场文书
小学校长个人总结
2015/03/03 职场文书
数学教师求职信范文
2015/03/20 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书
学习心得体会
2019/06/20 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python