当前位置: 首页 > news >正文

音频干扰检测(频域方法)

测试音响系统的通路上是否有外部干扰时,可以通过播放1000赫兹的正弦波信号,在输出端采集数字信号(I2S,TDD,A2B)并保存为.wav文件。 然后通过以下Python代码检测。

import numpy as np

import librosa

import matplotlib.pyplot as plt

def load_and_normalize_audio(audio_path, sr=48000, apply_window=True, channel=2):

    """channel参数指定要分析的声道,索引从0开始"""

    y, sr = librosa.load(audio_path, sr=sr, mono=False)

    # 确保选取多声道中的指定声道,如果是单声道信号,则直接使用

    if y.ndim > 1 and y.shape[0] > channel:

        y = y[channel, :]

    elif y.ndim > 1:

        print("Warning: Requested channel not found. Using first channel instead.")

        y = y[0, :]

    # 先归一化音频信号到[-1, 1]

    y = y / np.max(np.abs(y))

    # 应用窗函数

    if apply_window:

        window = np.hanning(len(y))

        y = y * window

    return y, sr

def find_interference(y, sr, target_freq, threshold_db=-80):

    """分析音频,找出除目标频率外的干扰信号"""

    # 计算FFT

    Y = np.fft.rfft(y)

    freqs = np.fft.rfftfreq(len(y), d=1/sr)

    # 计算幅度(dBFS)

    Y_amplitude = np.abs(Y) / len(Y)

    Y_dbfs = 20 * np.log10(np.maximum(Y_amplitude, 1e-12))

    # 将目标频率附近的幅度设置为非常低的数值来忽略目标频率

    target_idx = np.abs(freqs - target_freq).argmin()

    ignore_band = 10  # 忽略目标频率附近±10Hz范围

    Y_dbfs[target_idx-ignore_band:target_idx+ignore_band] = -np.inf

    # 寻找最大幅度的干扰频率

    max_idx = np.argmax(Y_dbfs)

    # 检查干扰是否高于阈值

    if Y_dbfs[max_idx] > threshold_db:

        print(f"检测到干扰频率:{freqs[max_idx]}Hz,幅度 {Y_dbfs[max_idx]}dB")

    else:

        print("未检测到显著干扰。")

def plot_spectrum(y, sr):

    """绘制频谱图"""

    Y = np.fft.rfft(y)

    freqs = np.fft.rfftfreq(len(y), d=1/sr)

    Y_amplitude = np.abs(Y) / len(Y)

    Y_dbfs = 20 * np.log10(np.maximum(Y_amplitude, 1e-12))

    plt.figure(figsize=(10, 6))

    plt.plot(freqs, Y_dbfs)

    plt.xlabel('Frequency (Hz)')

    plt.ylabel('Amplitude (dB)')

    plt.title('Frequency Spectrum')

    plt.ylim(-120, 0)

    plt.xlim(0, sr // 2)

    plt.show()

# 替换audio_path为你的音频文件路径

audio_path = 'sine.wav'

y, sr = load_and_normalize_audio(audio_path)

plot_spectrum(y, sr)

find_interference(y, sr, target_freq=1000)

以上代码由AI生成,本人调试完成,实测可用! :)

相关文章:

音频干扰检测(频域方法)

测试音响系统的通路上是否有外部干扰时,可以通过播放1000赫兹的正弦波信号,在输出端采集数字信号(I2S,TDD,A2B)并保存为.wav文件。 然后通过以下Python代码检测。 import numpy as np import librosa im…...

Rust引用借用 vs 原始指针

let v: i32 10; let v1 &v; let a: *const i32 &v; println!("a{:p}", a); let b a as *mut i32; //无法从&v直接转换成*mut i32,需要从*const i32过度 println!("b{:p}", b); unsafe {*b1; } println!("v{} v1{}"…...

抖音视频关键词无水印下载软件|手机网页视频批量提取工具

全新视频关键词无水印下载软件,助您快速获取所需视频! 随着时代的发展,视频内容已成为人们获取信息和娱乐的重要途径。为了方便用户获取所需视频,推出了一款功能强大的视频关键词无水印下载软件。该软件主要功能包括关键词批量提取…...

关于Devc++调试的问题以及解决STL变量无法查看

目前Devc的调试主要有以下几点: 1.调试不能直接查看stl变量,会卡死不动 2.目前单步进入只能用鼠标键按 3.若想按下一步进入函数体内,要在函数体内打上断点才行 4.调试到return 0 ;上一句就停了,不会结束程序 5.目前F2跳至断点…...

MATLAB:优化与规划问题

一、线性规划 % 线性规划(Linear programming, 简称LP) fcoff -[75 120 90 105]; % 目标函数系数向量 A [9 4 7 54 5 6 105 10 8 53 8 9 77 6 4 8]; % 约束不等式系数矩阵 b [3600 2900 3000 2800 2200]; % 约束不等式右端向量 Aeq []; % 约束等式系…...

Oracal执行计划解析

概述 | Id | Operation | Name | Rows | Bytes | TempSpc | Cost (%CPU) | Time | ----------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1…...

对form表单对象中数组中的字段进行校验的方法

当对form表单中&#xff0c;数组readings中的字段进行校验时&#xff0c;prop和rules绑定要写成动态的&#xff0c;如下代码 <div v-for"(item,index) in form.readings"><el-form-item label"上次读数" > <!--prop"scds"-->…...

一、JAVA集成海康SDK

JAVA集成海康SDK 文章目录 JAVA集成海康SDK前言一、项目依赖 jar1. examples.jar2. 项目依赖 jna.jar,可以通过 maven依赖到。二、集成SDK1.HcNetSdkUtil 海康 SDK封装类2.HCNetSDK3.Linux系统集成SDK三、总结前言 提示:首先去海康官网下载 https://open.hikvision.com/dow…...

PAT 乙级 1031 查验身份证 c语言实现

一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下&#xff1a; 首先对前17位数字加权求和&#xff0c;权重分配为&#xff1a;{7&#xff0c;9&#xff0c;10&#xff0c;5&#xff0c;8&#xff0c;4&#xff0c;2&#xff0c;1&am…...

LeetCode 345. 反转字符串中的元音字母

给你一个字符串 s &#xff0c;仅反转字符串中的所有元音字母&#xff0c;并返回结果字符串。 元音字母包括 ‘a’、‘e’、‘i’、‘o’、‘u’&#xff0c;且可能以大小写两种形式出现不止一次。 示例 1&#xff1a; 输入&#xff1a;s “hello” 输出&#xff1a;“holl…...

go中函数与方法的区别与go中关于面向对象理解

声明方法的区别 函数是一段可以独立调用的代码块&#xff0c;它可以有参数和返回值。函数的声明不依赖于任何类型&#xff0c;可以直接通过函数名进行调用。 函数的声明格式如下&#xff1a; func functionName(parameters) returnType {// 函数体 }示例&#xff1a; func A…...

SQL Server 实验二:数据库视图的创建和使用

目录 第一关 相关知识 什么是表 操作数据表 创建数据表 插入数据 修改表结构 删除数据表 编程要求 第一关实验代码&#xff1a; 第二关 相关知识 视图是什么 视图的优缺点 视图的优点 视图的缺点 操作视图 创建视图 通过视图向基本表中插入数据 通过视图修改基本表的…...

树结构导入

Testpublic void testExcel1() {// 写法1&#xff1a;JDK8 ,不用额外写一个DemoDataListener// since: 3.0.0-beta1EasyExcelFactory.read(new File("C:\\Users\\Admin\\Desktop\\树导入.xlsx"), null, new ReadListener<Map>() {public static final int BATC…...

Promise封装ajax

Promise封装原生ajax 1.node的内置模块url, http 2.Promise封装原生ajax 01-node的内置模块 # url: 操作网址 let url require(url) url.parse(网址, [布尔值: 决定是否将查询字符串转换为对象格式])&#xff1a; 将网址解析成对象# http: 创建本地服务器 let http requi…...

47 vue 常见的几种模型视图不同步的问题

前言 这里主要是来看一下 关于 vue 中的一些场景下面 可能会出现 模型和视图 不同步更新的情况 然后 这种情况主要是 vue 中的对象 属性没有响应式的 setter, getter 然后 我们这里就来看一下 大多数的情况下的一个场景, 和一些处理方式 当然 处理方式主要是基于 Vue.set, …...

以太网/USB 数据采集卡 24位16通道 labview 256K同步采样

XM7016以太网SUB数据采集卡 XM7016是一款以太网/USB高速数据采集卡&#xff0c;具有16通道真差分输入&#xff0c;24位分辨率&#xff0c;单通道最高采样率256ksps. 16通道同步共计4.096Msps、精密前置增益放大、集成IEPE/ICP硬件支持的特点。本产品采用了多个高精度24位ADC单元…...

python基础 | 核心库:PIL

1、读取图像信息 查看图像信息 读取同一文件夹下的文件 可加 ./可不加 rom PIL import Image img Image.open(image.jpg) # 打开图像文件(注意:是去掉文件头的纯数据) print(img.format) # 图像格式(如BMP PNG JPEG 等) print(img.size) # 图像大小(…...

#Linux系统编程(共享内存)

&#xff08;一&#xff09;发行版&#xff1a;Ubuntu16.04.7 &#xff08;二&#xff09;记录&#xff1a; &#xff08;1&#xff09;什么是共享内存 共享内存是System V版本的最后一个进程间通信方式。共享内存&#xff0c;顾名思义就是允许两个不相关的进程访问同一个逻辑…...

蓝桥杯备考随手记: practise01

问题描述: 小明对数位中含有 2、0、1、9 的数字很感兴趣&#xff0c;在 1 到 40 中这样的数包 括 1、2、9、10 至 32、39 和 40&#xff0c;共 28 个&#xff0c;他们的和是 574。 请问&#xff0c;在 1 到 2019 中&#xff0c;所有这样的数的和是多少&#xff1f; 思路分析…...

【openGL4.x手册09】转换反馈

目录 一、说明二、着色器设置2.2 捕获的数据格式2.2 高级交错2.3 双精度和对齐2.4 In-shader规范 三、缓冲区绑定四、反馈过程五、反馈对象5.1 反馈暂停和恢复5.2 绑定暂停的反馈对象。 六、反馈渲染七、局限性 一、说明 转换反馈是捕获由顶点处理步骤生成的基元的过程&#xf…...

FModel:虚幻引擎资源解析的技术突破与实践指南

FModel&#xff1a;虚幻引擎资源解析的技术突破与实践指南 【免费下载链接】FModel Unreal Engine Archives Explorer 项目地址: https://gitcode.com/gh_mirrors/fm/FModel 在游戏开发与逆向工程领域&#xff0c;资源解析工具的选择直接影响工作效率与成果质量。当面对…...

OpenClaw+Qwen3-32B低成本方案:RTX4090D镜像长任务稳定性实测

OpenClawQwen3-32B低成本方案&#xff1a;RTX4090D镜像长任务稳定性实测 1. 为什么需要测试长任务稳定性&#xff1f; 上周我遇到一个头疼的问题&#xff1a;用OpenClaw整理3年积累的摄影素材时&#xff0c;任务执行到2小时突然中断。检查日志发现是显存溢出导致模型服务崩溃…...

SCI期刊AI率要求越来越严:一二区5%以下该怎么降

SCI一二区期刊AI率卡到5%以下&#xff0c;我的论文差点废了——后来这么救回来的 2026年开年&#xff0c;身边三个同学的SCI投稿被拒&#xff0c;理由都一样&#xff1a;AI-generated content detected。不是内容不行&#xff0c;是AI率没过关。 我的判断很直接&#xff1a;S…...

告别迷茫!Java程序员入门AI的完整学习地图

文章目录前言一、先破三个心魔&#xff1a;Java搞AI到底靠不靠谱&#xff1f;心魔一&#xff1a;AI都是Python的天下&#xff0c;Java只能看戏&#xff1f;心魔二&#xff1a;必须得回炉重造学数学&#xff1f;心魔三&#xff1a;要从Hello World开始学Python&#xff1f;二、J…...

基于WebSocket与Protobuf协议的抖音直播间实时数据采集方案

基于WebSocket与Protobuf协议的抖音直播间实时数据采集方案 【免费下载链接】DouyinLiveWebFetcher 抖音直播间网页版的弹幕数据抓取&#xff08;2024最新版本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/do/DouyinLiveWebFetcher 技术背景与挑战 在当今直…...

SpringBoot实战:RestTemplate如何优雅地上传文件?附完整代码示例

SpringBoot实战&#xff1a;RestTemplate文件上传的深度优化与避坑指南 在微服务架构盛行的今天&#xff0c;SpringBoot应用间的文件传输已成为日常开发中的高频需求。许多开发者在使用RestTemplate进行文件上传时&#xff0c;往往会遇到各种"诡异"的问题——明明代码…...

每日股票分析自动化:基于Ollama的daily_stock_analysis镜像实战教程

每日股票分析自动化&#xff1a;基于Ollama的daily_stock_analysis镜像实战教程 1. 为什么需要本地化AI股票分析工具 在金融投资领域&#xff0c;及时获取准确的股票分析至关重要。传统方式需要人工收集数据、分析图表、撰写报告&#xff0c;整个过程耗时耗力。而基于大语言模…...

STM32F103引脚功能全解析:从供电到通信接口的实战配置指南

STM32F103引脚功能全解析&#xff1a;从供电到通信接口的实战配置指南 在嵌入式系统开发中&#xff0c;STM32F103系列微控制器因其出色的性能和丰富的外设资源&#xff0c;成为众多开发者的首选。这款基于ARM Cortex-M3内核的MCU&#xff0c;不仅具备72MHz的主频&#xff0c;还…...

通义千问3-Reranker-0.6B效果对比:不同参数规模的性能差异

通义千问3-Reranker-0.6B效果对比&#xff1a;不同参数规模的性能差异 1. 引言 在AI快速发展的今天&#xff0c;文本检索和排序技术已经成为智能搜索、推荐系统和RAG应用的核心。通义千问团队最新推出的Qwen3-Reranker系列模型&#xff0c;提供了从0.6B到8B多种参数规模的选择…...

SEO_从基础到精通,系统学习SEO的完整路径解析

<h2>SEO的基础&#xff1a;了解搜索引擎优化的核心概念</h2> <p>搜索引擎优化&#xff08;SEO&#xff09;是一个广泛且复杂的领域&#xff0c;它的核心在于提升网站在搜索引擎结果页面&#xff08;SERP&#xff09;中的自然排名。了解SEO的基础概念是每一个…...