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 相关文章推荐
Fiddler如何抓取手机APP数据包
Jan 22 Python
学习python类方法与对象方法
Mar 15 Python
Python max内置函数详细介绍
Nov 17 Python
浅析python协程相关概念
Jan 20 Python
python+pyqt5实现KFC点餐收银系统
Jan 24 Python
Python登录系统界面实现详解
Jun 25 Python
Python 格式化打印json数据方法(展开状态)
Feb 27 Python
Python+Appium实现自动化测试的使用步骤
Mar 24 Python
python爬虫用mongodb的理由
Jul 28 Python
Python进行特征提取的示例代码
Oct 15 Python
Python Parser的用法
May 12 Python
python多线程方法详解
Jan 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
PHP+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
2016/03/29 PHP
CI框架中类的自动加载问题分析
2016/11/21 PHP
[原创]php正则删除html代码中class样式属性的方法
2017/05/24 PHP
JS与框架页的操作代码
2010/01/17 Javascript
js+数组实现网页上显示时间/星期几的实用方法
2013/01/18 Javascript
js调试系列 控制台命令行API使用方法
2014/06/18 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
js轮播图无缝滚动效果
2017/06/17 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
深入理解Node module模块
2018/03/26 Javascript
vue中将html字符串转换成html后遇到的问题小结
2018/12/10 Javascript
Nuxt.js 数据双向绑定的实现
2019/02/17 Javascript
JS module的导出和导入的实现代码
2019/02/25 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
vue 移动端记录页面浏览位置的方法
2020/03/11 Javascript
vue实现两个区域滚动条同步滚动
2020/12/13 Vue.js
js面向对象封装级联下拉菜单列表的实现步骤
2021/02/08 Javascript
Python随机生成彩票号码的方法
2015/03/05 Python
Python中使用bidict模块双向字典结构的奇技淫巧
2016/07/12 Python
win与linux系统中python requests 安装
2016/12/04 Python
Python回文字符串及回文数字判定功能示例
2018/03/20 Python
Python socket实现简单聊天室
2018/04/01 Python
Python文件常见操作实例分析【读写、遍历】
2018/12/10 Python
python两个_多个字典合并相加的实例代码
2019/12/26 Python
Python表达式的优先级详解
2020/02/18 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
Html5上传图片 移动端、PC端通用代码
2016/06/08 HTML / CSS
Staples加拿大官方网站:办公用品一站式采购
2016/09/25 全球购物
Merrell迈乐澳大利亚网站:购买户外登山鞋
2017/05/28 全球购物
《小儿垂钓》教学反思
2014/02/23 职场文书
远程网络教育毕业生自我鉴定
2014/04/14 职场文书
SQL Server基本使用和简单的CRUD操作
2021/04/05 SQL Server
微信小程序中wxs文件的一些妙用分享
2022/02/18 Javascript
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang