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实现根据ip地址反向查找主机名称的方法
Apr 29 Python
python超简单解决约瑟夫环问题
May 12 Python
python编写分类决策树的代码
Dec 21 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
Jun 04 Python
Python之循环结构
Jan 15 Python
pandas 数据索引与选取的实现方法
Jun 21 Python
Pytorch加载部分预训练模型的参数实例
Aug 18 Python
selenium+PhantomJS爬取豆瓣读书
Aug 26 Python
python科学计算之scipy——optimize用法
Nov 25 Python
浅谈pytorch、cuda、python的版本对齐问题
Jan 15 Python
Python reduce函数作用及实例解析
May 08 Python
python上下文管理的使用场景实例讲解
Mar 03 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
星际初学者游戏中永远要做的事
2020/03/04 星际争霸
浅谈PHP语法(1)
2006/10/09 PHP
phpMyAdmin 链接表的附加功能尚未激活的问题
2010/08/01 PHP
PHP禁止页面缓存的代码
2011/10/23 PHP
用jquery仿做发微博功能示例
2014/04/18 Javascript
jQuery的deferred对象详解
2014/11/12 Javascript
JS+CSS实现自适应选项卡宽度的圆角滑动门效果
2015/09/15 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
2016/11/18 Javascript
DataTables添加额外的查询参数和删除columns等无用参数实例
2017/07/04 Javascript
JS实现点击Radio动态更新table数据
2017/07/18 Javascript
浅谈JavaScript的innerWidth与innerHeight
2017/10/12 Javascript
Vue组件全局注册实现警告框的实例详解
2018/06/11 Javascript
微信小程序仿朋友圈发布动态功能
2018/07/15 Javascript
vue多次循环操作示例
2019/02/08 Javascript
解决element ui select下拉框不回显数据问题的解决
2019/02/20 Javascript
Vue中的循环及修改差值表达式的方法
2019/08/29 Javascript
layer.prompt输入层的例子
2019/09/24 Javascript
python定向爬取淘宝商品价格
2018/02/27 Python
python查看列的唯一值方法
2018/07/17 Python
python使用tornado实现简单爬虫
2018/07/28 Python
django框架F&Q 聚合与分组操作示例
2019/12/12 Python
Python稀疏矩阵及参数保存代码实现
2020/04/18 Python
Python爬虫HTPP请求方法有哪些
2020/06/03 Python
购买美国制造的相框和画框架:Picture Frames
2018/08/14 全球购物
吉尔德利巧克力公司:Ghirardelli Chocolate Company
2019/03/27 全球购物
莫斯科珠宝厂官方网站:Miuz
2020/09/19 全球购物
俄罗斯卫浴采暖及维修用品超级市场:Dkrussia
2020/05/12 全球购物
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
2014/09/26 面试题
电气自动化大学生求职信
2013/10/16 职场文书
大学生毕业的自我鉴定
2013/11/13 职场文书
机械操作工岗位职责
2014/08/08 职场文书
四风问题个人对照检查材料
2014/09/26 职场文书
道德与公民自我评价
2015/03/09 职场文书
公司表扬稿范文
2015/05/05 职场文书
2015国庆66周年宣传语
2015/07/14 职场文书
Java实现扫雷游戏详细代码讲解
2022/05/25 Java/Android