轻松检测麦克风功能:使用Python的sounddevice和soundfile库
轻松检测麦克风功能:使用Python的sounddevice和soundfile库
在进行音频处理或开发需要使用麦克风的应用程序时,确保麦克风功能正常是非常重要的。本文将介绍一个简单的Python脚本,它能够帮助我们检测本地麦克风的功能,确保我们的设备能够正常录音。
Python环境准备
在开始之前,请确保你的Python环境已经安装了sounddevice和soundfile这两个库。如果没有安装,可以通过以下命令进行安装(清华镜像源下载):
pip install sounddevice soundfile -i https://pypi.tuna.tsinghua.edu.cn/simple
脚本介绍
下面是一个名为sound_check.py的Python脚本,它使用sounddevice库来检测和测试麦克风,同时使用soundfile库来保存录音文件。
功能概述
● 获取麦克风列表:脚本首先会列出所有可用的麦克风设备。
● 选择麦克风设备:用户可以从列表中选择一个麦克风进行测试。
● 录音:脚本将使用选定的麦克风进行录音,时长为5秒。
● 保存录音:录音完成后,脚本会将录音保存为WAV文件。
代码解析
以下是sound_check.py脚本的详细代码解析:
导入所需的库
import sounddevice as sd
import soundfile as sf
定义测试麦克风的函数
def test_microphone(device_index=None, output_filename=“output.wav”):
# 设置录音参数
duration = 5 # 录音时长(秒)
fs = 44100 # 采样频率
# 获取麦克风列表
devices = sd.query_devices()
# 如果提供了设备索引并且有效,则使用指定的麦克风
if device_index is not None and device_index < len(devices):print(f"Using microphone: {devices[device_index]['name']}")
else:print("Using default microphone.")# 获取并设置麦克风支持的采样率
supported_rates = devices[device_index]['default_samplerate']
if supported_rates != fs:print(f"Adjusting sample rate to {int(supported_rates)} Hz (supported by the device).")fs = int(supported_rates) # 确保采样率是整数print("Recording...")
# 使用sounddevice录制声音
recording = sd.rec(int(duration * fs), samplerate=fs, channels=1, device=device_index)# 等待录音完成
sd.wait()print("Recording finished.")# 保存录音为WAV文件
sf.write(output_filename, recording, fs)print(f"File saved as {output_filename}")
主函数入口
if name == “main”:
# 获取麦克风列表并打印
devices = sd.query_devices()
for i, device in enumerate(devices):
print(f"{i}: {device[‘name’]}")
# 用户输入选择麦克风设备索引
device_index = int(input("Enter the index of the microphone to use: "))
test_microphone(device_index)
使用方法
- 运行脚本,它会自动列出所有可用的麦克风设备。
- 根据列表,输入你想要测试的麦克风的索引号。
- 脚本将开始录音,并在5秒后保存录音文件。
最后
通过这个简单的脚本,可以轻松地检测本地麦克风设备是否工作正常,并且能够保存录音以供进一步分析。无论是在开发过程中还是日常使用中,这个工具都能提供极大的便利。希望这篇博客能帮助你更好地利用Python进行音频处理。
相关文章:
轻松检测麦克风功能:使用Python的sounddevice和soundfile库
轻松检测麦克风功能:使用Python的sounddevice和soundfile库 在进行音频处理或开发需要使用麦克风的应用程序时,确保麦克风功能正常是非常重要的。本文将介绍一个简单的Python脚本,它能够帮助我们检测本地麦克风的功能,确保我们的设…...
k8s 部署步骤整理(containerd)
版本:v1.31 容器运行时:containerd 网络插件:flannel 系统:Ubuntu22.04 安装部署步骤 安装containerd sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl …...
Swagge详解,SpringBoot项目集成Swagger
介绍 相信无论是前端还是后端开发,都或多或少地被接口文档折磨过。前端经常抱怨后端给的接口文档与实际情况不一致。后端又觉得编写及维护接口文档会耗费不少精力,经常来不及更新。其实无论是前端调用后端,还是后端调用后端,都期望…...
docker搭建etcd集群环境方式
docker搭建etcd集群环境方式 from: etcd 虚拟机与docker搭建etcd集群环境方式_docker部署etcd集群-CSDN博客 windows系统下 1: “\”要换成:“^” 2: 不能在windows powershell下执行...
重装ubuntu系统后配置
零、我的电脑硬件 1、购买型号 2021年12月25日在京东下单 7196元 联想拯救者15.6英寸 R7000P 2021游戏本 2、运行内存 内存 16 3、显卡型号 GPU nvidia RTX 3050Ti 4GB 一、安装终端 虽然自带的有,但是更方便 sudo apt install terminator 二、两个系统…...
Java基于数据库的分布式可重入锁(带等待时间和过期时间)
文章目录 技术背景介绍代码实现数据库表结构尝试获取锁续约阻塞式获取锁解锁检查锁是否过期或者释放 使用示例优化方案 项目代码 技术背景介绍 一般分布式锁使用最方便的就是使用redis实现,因为他自带超时过期机制、发布订阅模式、高吞吐高性能的优势,…...
国家信息安全水平考试(NISP一级)最新题库-第十七章
目录 另外免费为大家准备了刷题小程序和docx文档,有需要的可以私信获取 1 受到了ARP欺骗的计算机,发出的数据包, 地址是错误的() A.源IP;B.目的IP;C.源MAC;D.目的MAC 正…...
Java 8 新特性概览
Java 8 是 Java 语言发展史上的一个重要里程碑,它引入了许多革命性的特性,极大地提高了开发效率和程序性能。以下是 Java 8 的一些关键新特性: 1. Lambda 表达式 Lambda 表达式是 Java 8 中最引人注目的特性之一。它允许你以简洁的语法编写…...
pyspark==堆叠
安装环境 docker pull jupyter/all-spark-notebook 方式一 from pyspark.sql import SparkSession from pyspark.sql.functions import expr, col# 创建SparkSession spark SparkSession.builder.appName("StudentScores").getOrCreate()# 创建示例数据 data [(…...
Zypher Network Layer3 主网上线,不容错过的“宝藏方舟”活动
前言 随着 Zytron Layer3 主网的上线,Zypher Network 联合 Linea 共同推出了“宝藏方舟”活动,用户可通过参与活动,获得包括代币、积分、SBT 等系列奖励。 Zypher Network 是一个以 ZK 方案为核心的游戏底层堆栈,其提供了一个具备…...
【小白学机器学习21】 理解假设检验的关键:反证法
目录 理解假设检验的关键:反证法 1 假设的检验的出发点:H1假设, 1.1 为什么我们不去直接证明H1是否正确? 2 故意设立一个假设H1的否命题为H0 3 设定显著度α 4 总结假设检验的整个思路就是反证法 5 两类错误的关系 理解假…...
鸿蒙中富文本编辑与展示
富文本在鸿蒙系统如何展示和编辑的?在文章开头我们提出这个疑问,带着疑问来阅读这篇文章。 富文本用途可以展示图文混排的内容,在日常App 中非常常见,比如微博的发布与展示,朋友圈的发布与展示,都在使用富文…...
Python Q-learning 算法详解与应用案例
目录 Python Q-learning 算法详解与应用案例引言一、Q-learning 的基本原理1.1 强化学习基础1.2 Q值及其更新1.3 Q-learning 的特性 二、Python 中 Q-learning 的面向对象实现2.1 QTable 类的实现2.2 Environment 类的实现2.3 Agent 类的实现 三、案例分析3.1 简单环境中的 Q-l…...
解决:如何在opencv中得到与matlab立体标定一样的矫正图?(python版opencv)
目的:采用一样的标定参数,matlab中和opencv中的立体矫正图像是一样的吗?不一样的话怎么让它们一样? 结论:不一样。后文为解决方案。 原因:注意matlab的标定结果在matlab中的用法和在opencv中的用法不一样&a…...
gin入门教程(4):路由与处理器
路由与处理器 在 Gin 框架中,路由和处理器是核心组成部分,负责将 HTTP 请求映射到相应的处理逻辑。 1. 定义路由 在 cmd/main.go 中,您可以定义不同的路由,例如: r.GET("/ping", func(c *gin.Context) {…...
【python+Redis】hash修改
文章目录 前请详解一、关于Update1. 语法2. 代码示例 二、完整代码 前请详解 Redis库数据 keyvalue1{“id”: 1, “name”: “xxx”, “age”: “18”, “sex”: “\u7537”}2{“id”: 2, “name”: “xxx”, “age”: “18”, “sex”: “\u5973”}3{“id”: 3, “name”: “…...
MAVlink协议 部分通用消息集解析
文章目录 MAVLink是一种非常轻量级的消息传输协议, 用于地面控制终端(地面站)与无人机之间 (以及机载无人机组件之间) 进行通信, 为一种设计用于资源受限系统及带宽受限链路的二进制遥测协议。 HEARTBEAT 检测信号消息显示系统或组件存在并正…...
c++实现跳表
原理 跳表(Skip List) 是一种随机化数据结构,用于高效查找、插入和删除,尤其适用于有序数据集合。相比链表,跳表通过多层索引结构加速查找,期望时间复杂度接近 O(logn)。跳表的主要思想是: …...
新探索研究生英语读写教程pdf答案(基础级)
《新探索研究生英语读写教程》的设计和编写充分考虑国内研究生人才培养目标和研究生公共英语的教学需求, 教学内容符合研究生认知水平, 学术特征突出;教学设计紧密围绕学术阅读、学术写作和学术研究能力培养;教学资源立体多元&…...
管道与共享内存
一,命名管道 管道的限制就是他只能在有血缘关系(父子进程)的进程中,允许互相访问,这是有局限性的,所以我们想在毫无关系的进程中允许他们相互访问,这就是命名管道的定义。 总结:命名…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
