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实现子类调用父类的方法
Nov 10 Python
python解决Fedora解压zip时中文乱码的方法
Sep 18 Python
Python实现获取磁盘剩余空间的2种方法
Jun 07 Python
Python3实现购物车功能
Apr 18 Python
python爬取微信公众号文章
Aug 31 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
Jun 28 Python
30秒学会30个超实用Python代码片段【收藏版】
Oct 15 Python
基于Python获取照片的GPS位置信息
Jan 20 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
Jan 20 Python
python使用列表的最佳方案
Aug 12 Python
python 中yaml文件用法大全
Jul 04 Python
PyCharm 配置SSH和SFTP连接远程服务器
May 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 session的锁和并发
2016/01/22 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
静态的动态续篇之来点XML
2006/08/15 Javascript
javascript 混合的构造函数和原型方式,动态原型方式
2009/12/07 Javascript
一个简单的动态加载js和css的jquery代码
2014/09/01 Javascript
jQuery中:eq()选择器用法实例
2014/12/29 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
2015/03/10 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
2015/05/09 Javascript
DOM 事件的深入浅出(一)
2016/12/05 Javascript
JavaScript正则表达式小结(test|match|search|replace|split|exec)
2016/12/08 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
浅谈react+es6+webpack的基础配置
2017/08/09 Javascript
Vue下的国际化处理方法
2017/12/18 Javascript
解决vue中修改了数据但视图无法更新的情况
2018/08/27 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
2018/09/01 Javascript
Vue触发式全局组件构建的方法
2018/11/28 Javascript
Vue实现table上下移动功能示例
2019/02/21 Javascript
使用原生JS实现滚轮翻页效果的示例代码
2020/05/31 Javascript
python实现批量转换文件编码(批转换编码示例)
2014/01/23 Python
python字符串替换示例
2014/04/24 Python
python结合API实现即时天气信息
2016/01/19 Python
python3实现ftp服务功能(客户端)
2017/03/24 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
2017/09/26 Python
python使用turtle库绘制时钟
2020/03/25 Python
pygame实现烟雨蒙蒙下彩虹雨
2019/11/11 Python
python中的逆序遍历实例
2019/12/25 Python
纯CSS3实现表单验证效果(非常不错)
2017/01/18 HTML / CSS
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
工商管理专业职业生涯规划
2014/01/01 职场文书
大二自我鉴定
2014/01/31 职场文书
前台文员岗位职责
2015/02/04 职场文书
高考诚信考试承诺书
2015/04/29 职场文书
高中运动会广播稿
2015/08/19 职场文书
大学迎新生的欢迎词
2019/06/25 职场文书
node快速搭建后台的实现步骤
2022/02/18 NodeJs
图片批量处理 - 尺寸、格式、水印等
2022/03/07 杂记