基于Python实现录音功能的示例代码

目录
  • 安装
  • 查找可用的麦克风
  • 录制音频
  • 将音频保存到文件

今天我们来介绍一个好玩且实用的东西,我们使用python来实现一个录音的功能,废话不多说,让我们直接开始。

安装

使用 PIP 安装 PvRecorder:

pip3 install pvrecorder

查找可用的麦克风

一台计算机可以有多个麦克风, 例如,笔记本电脑有一个内置麦克风,可能还连接了一个耳机, 第一步是找到我们要录音的麦克风。

from pvrecorder import PvRecorder  

for index, device in enumerate(PvRecorder.get_audio_devices()):
   print(f"[{index}] {device}")

在 Dell XPS 笔记本电脑上运行上面的代码可以得到:

[0] Monitor of sof-hda-dsp HDMI3/DP3 Output  
[1] Monitor of sof-hda-dsp HDMI2/DP2 Output  
[2] Monitor of sof-hda-dsp HDMI1/DP1 Output  
[3] Monitor of sof-hda-dsp Speaker + Headphones  
[4] sof-hda-dsp Headset Mono Microphone + Headphones Stereo Microphone  
[5] sof-hda-dsp Digital Microphone

记下目标麦克风的索引,我们将其传递给 PvRecorder 的构造函数, 不确定时,可以将 -1 传递给构造函数以使用默认麦克风。

录制音频

首先,创建一个 PvRecoder 实例, 你需要提供一个 device_index(见上文)和一个 frame_length。frame_length 是你希望在每次读取时接收的音频样本数, 我们将其设置为 512(16 kHz 音频的 32 毫秒), 然后调用 .start() 开始录制,录制完成后,继续循环调用 .read() 以接收音频,调用 .stop() 停止记录,然后调用 .delete() 以在完成后释放资源。

recorder = PvRecorder(device_index=-1, frame_length=512)  

try:
   recorder.start()  

   while True:
       frame = recorder.read()
       # Do something ...
except KeyboardInterrupt:
   recorder.stop()
finally:
   recorder.delete()

将音频保存到文件

你可以使用上面的代码片段中增加自己的逻辑做任何我们想做的事情, 无论你是要检测唤醒词、识别语音命令、将语音转录为文本、为搜索索引音频等,还是将其保存到文件中, 比如我们要保存到文件中,可以使用下面的代码, 这段代码显示了如何将音频保存为 WAVE 文件格式。

from pvrecorder import PvRecorder
import wave
import struct  

recorder = PvRecorder(device_index=-1, frame_length=512)
audio = []  

try:
   recorder.start()  

   while True:
       frame = recorder.read()
       audio.extend(frame)
except KeyboardInterrupt:
    recorder.stop()
    with wave.open('audiotest', 'w') as f:
        f.setparams((1, 2, 16000, 512, "NONE", "NONE"))
        f.writeframes(struct.pack("h" * len(audio), *audio))
finally:
   recorder.delete()

到此这篇关于基于Python实现录音功能的示例代码的文章就介绍到这了,更多相关Python录音内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python录音并调用百度语音识别接口的示例

    #!/usr/bin/env python import requests import json import base64 import pyaudio import wave import os import psutil #首先配置必要的信息 def bat(voice_path): baidu_server = 'https://aip.baidubce.com/oauth/2.0/token?' grant_type = 'client_credentials' client_id

  • python实现录音小程序

    本文为大家分享了python实现录音小程序的具体代码,供大家参考,具体内容如下 学习目标:掌握python的pyaudio扩展包和Wave模块录制语音的方法 Wav音频:声道数,采样频率,量化位数 python Wav包是自带的,pyaudio需要下载 pip3 install pyaudio python读Wav文件: fp=wave.open('','rb') nf=fp.getnframes()#获取文件的采样点数量 print('sampwidth:',fp.getsampwidth()

  • Python 识别录音并转为文字的实现

    目录 程式功能: 用 UI 界面,点击界面上的“开始识别”来录音(调用百度云语音接口),并自动将结果显示在界面的文本框中 Time: 2022/03/06 Author: Xiaohong 功能:Python 更改目录下 目录及文件的 顺序命名 项目的文件结构方式:1. PyQt5 UI 文件:  My_Audio_Record_cloud.ui2. PyQt5 UI 文件转换生成的 PY 文件:  My_Audio_Record_cloud_Ui.py3. PyQt5 UI 文件对应的 Cla

  • python实现录音功能(可随时停止录音)

    本文实例为大家分享了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.C

  • python实现网页录音效果

    本文实例为大家分享了python实现网页录音效果的具体代码,供大家参考,具体内容如下 服务器:tornado 语言:python,JS,html 效果:(将录好的音放在指定位置) 实现逻辑: 部分实现代码: web: <button type="submit" class="btn btn-primary mb-2 record_start">开始录音</button> <button type="submit" c

  • python实现播放音频和录音功能示例代码

    音频预处理 这一讲主要介绍些音频基本处理方式,为接下来的语音识别打基础. 三种播放音频的方式 使用 python 播放音频有以下几种方式: os.system() os.system(file) 调用系统应用来打开文件,file 可为图片或者音频文件. 缺点:要打开具体的应用,不能在后台播放音频. pyaudio 安装:pip install pyaudio 官方提供了播放音频与录音的 api ,使用十分方便,只要把Filename更改为你的音频文件的文字,就可以播放音频了. ""&q

  • 基于python判断目录或者文件代码实例

    这篇文章主要介绍了基于python判断目录或者文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1. 判断目录是否存在 'isdir',删除目录时只有该目录为空才可以 'rmdir' import os if(os.path.isdir('D:/Python_workspace/spyder_space/test_各种功能/哈哈哈哈')): #判断目录是否存在 print('yes') os.rmdir('D:/Python_work

  • Python安装OpenCV的示例代码

    OpenCV介绍 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效--由一系列 C 函数和少量 C++ 类构成,同时提供了Python.Ruby.MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法. OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口.该库也有大量的Python.Java and MATLAB/OCTAVE(版本

  • 基于Python的OCR实现示例

    摘要: 近几天在做一个东西,其中需要对图像中的文字进行识别,看了前辈们的文章,找到两个较简单的方法:使用python的pytesseract库和调用百度AI平台接口.写下这篇文章做一个比较简短的记录和学习,后期如果有新内容再行补充. 1.使用python的pytesseract库 主要是安装库,比较简单,直接使用 pip install 安装即可:另外,如果进行中文识别,需要下载语言包,并配置好相应环境,具体操作可以进行百度,教程有不少.因为这个识别方法比较简单(但效果并不是很理想),下面直接贴

  • 利用python生成照片墙的示例代码

    PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了.其官方主页为:PIL. PIL历史悠久,原来是只支持python2.x的版本的,后来出现了移植到python3的库pillow,pillow号称是friendly fork for PIL,其功能和PIL差不多,但是支持python3.本文只使用了PIL那些最常用的特性与用法,主要参考自:http://www.effbot.org

  • 通过Python绘制中国结的示例代码

    目录 1 中国结的组成部分 2 设计中国结对象 3 绘制结体 4 绘制耳翼 5 绘制挂耳和流苏 6 完整代码,一键运行 1 中国结的组成部分 中国结是一种手工编织工艺品,它身上所显示的情致与智慧正是汉族古老文明中的一个侧面.因为其外观对称精致,可以代表汉族悠久的历史,符合中国传统装饰的习俗和审美观念,故命名为中国结.中国结代表着团结幸福平安,特别是在民间,它精致的做工深受大众的喜爱.其主要组成部分如下图所示. 2 设计中国结对象 基于Python Turtle库实现绘制,首先设计一个中国结对象,

  • Python实现边缘提取的示例代码

    目录 复习 一.边缘提取 1.什么是边缘 2.什么是边缘提取 二.Sobel算子 三.Canny边缘检测算法 1.算法步骤 2.高斯平滑 3.非极大值抑制 4.双阈值检测 四.相关代码 复习 (1)梯度: 梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模) (2)线性滤波 可以说是 图像处理 最基本的方法,它可以允许我们对图像进行处理,产生很多不同的效果 一.边缘提取 1.什么是边缘 图象

  • Python Flask基础教程示例代码

    本文研究的主要是Python Flask基础教程,具体介绍如下. 安装:pip install flask即可 一个简单的Flask from flask import Flask #导入Flask app = Flask(__name__) #创建一个Flask实例 #设置路由,即url @app.route('/') #url对应的函数 def hello_world(): #返回的页面 return 'Hello World!' #这个不是作为模块导入的时候运行,比如这个文件为aa.py,

  • Centos7实现MySQL基于日志还原数据的示例代码

    简介 Binlog日志,即二进制日志文件,用于记录用户对数据库操作的SQL语句信息,当发生数据误删除的时候我们可以通过binlog日志来还原已经删除的数据,还原数据的方法分为传统二进制文件还原数据和基于GTID的二进制文件还原数据 前期准备 准备一台Centos7虚拟机,关闭防火墙和selinux,配置IP地址,同步系统时间,安装MySQL数据库 传统二进制日志还原数据 修改配置文件 [root@localhost ~]# vi /etc/my.cnf server-id=1 log-bin=b

  • Python无损压缩图片的示例代码

    每个设计师.摄影师或有图片处理需求小编,都会面临批量高清大图的困扰. 因为高清大图放到网站上会严重拖慢加载速度,或是有的地方明确限制了图片大小,因此,为了完成工作,他们总是需要先把图片压缩,再上传. 当需要处理的图片多至十张.百张.千张,则严重影响工作效率.这时候,就可以交给Python啦! 只需要20行Python代码,就可以批量帮你无损压缩数张照片. ---1--- 前期工作 安装Python中现成的图片处理模块,然后将图片打包好导入,用循环的方式自动化处理图片就可以了! ---2--- 运

  • python操作链表的示例代码

    class Node: def __init__(self,dataval=None): self.dataval=dataval self.nextval=None class SLinkList: def __init__(self): self.headval=None # 遍历列表 def traversal_slist(self): head_node=self.headval while head_node is not None: print(head_node.dataval)

随机推荐