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

ESP32音频识别(FFT)实测调整(ESP-IDF 5.4)

#ifndef YC_AUDIO_H

#define YC_AUDIO_H

// I2S配置(根据硬件调整)

#define I2S_CHANNEL     I2S_NUM_0

#define I2S_BCK_PIN     42

#define I2S_WS_PIN      41

#define I2S_DATA_PIN    2

/*======= 系统配置 =======*/

#define FFT_SIZE        4096           // FFT点数

#define NOISE_BINS      50            // 噪声基底计算区间

#define MIN_DURATION    5             // 最小持续帧数(50ms/帧)

#define THRESHOLD_OFFSET 20.0         // 阈值相对噪声基底的偏移量

#define FREQ_TOLERANCE  50            // 频率允许误差±50Hz

#define NUM_CHANNELS    (1)           // For mono recording only!

#define CONFIG_BIT_SAMPLE 16          //位深

#define CONFIG_SAMPLE_RATE 16000      //采样率

#define SAMPLE_SIZE     (CONFIG_BIT_SAMPLE * 1024)      //16384

#define BYTE_RATE       (CONFIG_SAMPLE_RATE * (CONFIG_BIT_SAMPLE / 8)) * NUM_CHANNELS   //32000

//存储/带宽需求小:数据量约为16000样本/秒 × 位深(如16bit)= 256kbps

extern void audio_processing_task(void *arg);

#endif

// Copyright 2018-2019 Espressif Systems (Shanghai) PTE LTD

//

// Licensed under the Apache License, Version 2.0 (the "License");

// you may not use this file except in compliance with the License.

// You may obtain a copy of the License at

//

//     http://www.apache.org/licenses/LICENSE-2.0

//

// Unless required by applicable law or agreed to in writing, software

// distributed under the License is distributed on an "AS IS" BASIS,

// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

// See the License for the specific language governing permissions and

// limitations under the License.

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include "freertos/FreeRTOS.h"

#include "freertos/task.h"

#include "esp_system.h"

#include "driver/spi_master.h"

#include "soc/gpio_struct.h"

#include "driver/gpio.h"

#include "driver/uart.h"

#include "soc/uart_struct.h"

#include <math.h>

#include "esp_dsp.h"

#include "esp_log.h"

#include "esp_err.h"

#include "sdkconfig.h"

#include "driver/i2s_pdm.h"

#include "driver/spi_common.h"

#include "yc_audio.h"

#include <sys/param.h>

static const char *TAG = "audio_detect";

/*======= 硬件配置 =======*/

__attribute__((aligned(1

相关文章:

ESP32音频识别(FFT)实测调整(ESP-IDF 5.4)

#ifndef YC_AUDIO_H #define YC_AUDIO_H // I2S配置(根据硬件调整) #define I2S_CHANNEL I2S_NUM_0 #define I2S_BCK_PIN 42 #define I2S_WS_PIN 41 #define I2S_DATA_PIN 2 /*======= 系统配置 =======*/ #define FFT_SIZE 4096 // …...

解决找不到字体的问题

PlayerView在创建的时候回生成一个PlayerControlView&#xff0c;PlayerControlView构造方法中会用到字体。这个字体在某些机型上找不到。导致应用崩溃。报错信息大概是这样的 Binary XML file line #14: Error inflating class androidx.media3.ui.PlayerView androidx.media…...

交易所开发:构建高效数字交易枢纽

数字资产交易所在全球数字经济浪潮中已成为价值流通的核心枢纽。本文基于2025年最新技术标准和行业实践&#xff0c;从微秒级撮合引擎到跨链互操作性&#xff0c;从AI增强型风控到合规化路径&#xff0c;系统解析高效数字交易枢纽的构建方法论。 一、技术架构设计&#xff1a…...

极狐GitLab 项目功能和权限解读

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 项目功能和权限 (FREE ALL) 配置项目功能和权限 要配置项目的功能和权限&#xff1a; 1.在左侧边栏中&#xff0c;选择 搜…...

pdf多文件合并

【第三方工具】点我传送&#xff1a;https://www.ilovepdf.com/ 【java功能实现】 导入jar包 <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artif…...

AI日报 - 2025年4月23日

&#x1f31f; 今日概览(60秒速览) ▎&#x1f916; AGI突破 | Sam Altman称指向AGI的系统初现端倪&#xff0c;强调安全标准紧迫性&#xff1b;DeepMind CEO预测AI 5-10年内具备科学猜想能力。 AGI定义及测试标准引关注 (Dario Amodei)&#xff0c;AI安全与非扩散方法成讨论焦…...

【RAG】一篇文章介绍多模态RAG(MRAG)

一、引言 研究背景与动机&#xff1a;随着大语言模型&#xff08;LLMs&#xff09;的广泛应用&#xff0c;其在处理复杂任务时暴露出如产生幻觉、算术能力不足和缺乏可解释性等问题。多模态学习的兴起为解决这些问题提供了新方向&#xff0c;通过融合图像、文本、音频等多种模…...

学习笔记:黑马程序员JavaWeb开发教程(2025.3.25)

11.3 案例-文件上传-本地存储 文件名后缀解决&#xff0c;找到文件最后一个点的位置&#xff0c;截取点及其后面的字符&#xff0c;得到扩展名。代码实现&#xff0c;找到最后一个点的位置&#xff0c;使用方法originalFilename.lastIndexOf(“.”)&#xff0c;括号里面是指…...

启动当前文件夹下所有快捷方式批处理bat文件

新建文本文件写入下列代码 ​ echo off chcp 65001 >nul setlocal enabledelayedexpansionfor %%F in (*.lnk) do (echo 正在运行&#xff1a;%%Fstart "" "%%F" )echo 所有快捷方式已启动。 exit​ 将文件重命名为 start.bat 双击运行...

蓝桥杯算法实战分享:C/C++ 题型解析与实战技巧

蓝桥杯全国软件和信息技术专业人才大赛&#xff0c;作为国内知名的算法竞赛之一&#xff0c;吸引了众多编程爱好者参与。在蓝桥杯的赛场上&#xff0c;C/C 因其高效性和灵活性&#xff0c;成为了众多选手的首选语言。本文将结合蓝桥杯的赛制特点、常见题型以及实战案例&#xf…...

IDEA下载kotlin-compiler-embeddable特别慢

问题&#xff1a; 在创建IDEA插件项目时发现 下载kotlin-compiler-embeddable特别慢&#xff0c;然后等待几十分钟然后失败 可以先用控制台显示正在下载的链接&#xff0c;下载好 jar包&#xff1a; https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compi…...

武装Burp Suite工具:HaE 分析辅助类_插件.【高亮标记和信息提取利器】

武装 Burp Suite 插件&#xff1a;HaE 分析辅助类. ​​HaE 分析辅助类​​是一款基于正则表达式的高效数据提取与标记工具&#xff0c;常用于安全测试、日志分析等场景&#xff0c;通过预定义规则快速定位敏感信息&#xff08;如API密钥、URL参数&#xff09;&#xff0c;提升…...

使用Nacos 打造微服务配置中心

一、背景介绍 Nacos 作为服务注册中心的使用方式&#xff0c;同时 Nacos 还可以作为服务配置中心&#xff0c;用于集中式维护各个业务微服务的配置资源。 作为服务配置中心的交互流程图如下。 这样设计的目的&#xff0c;有一个明显的好处就是&#xff1a;有利于对各个微服务…...

C++——多态、抽象类和接口

目录 多态的基本概念 如何实现多态 在C中&#xff0c;派生类对象可以被当作基类对象使用 编程示例 关键概念总结 抽象类 一、抽象类的定义 基本语法 二、抽象类的核心特性 1. 不能直接实例化 2. 派生类必须实现所有纯虚函数才能成为具体类 3. 可以包含普通成员函数和…...

模拟实现strncat、qsort、atoi

目录 前言 一、模拟实现strncat 参数 代码演示&#xff1a; 二、模拟实现qsort 参数 代码演示&#xff1a; 前言 本文主要是对strncat&#xff0c;qsort&#xff0c;atoi的模拟实现 一、模拟实现strncat C 库函数 char *strncat(char *dest, const char *src, size_t n…...

记录学习的第三十天

今天终于又开始写博客了。 还是滑动窗口问题&#xff0c;这段时间不出意外都是这了 上面的思路是我自己做的&#xff0c;但是不知道为什么不行&#xff0c;有没有大佬能指点一下我。 接下来这道题是进阶的。不过我之前的基础都做的很艰难&#xff0c;道阻且长啊。...

图像预处理-直方图均衡化

一.什么是直方图 反映图像像素分布的统计图&#xff0c;横坐标就是图像像素的取值&#xff0c;纵坐标是该像素的个数。 二.绘制直方图 histcv2.calcHist(images, channels, mask, histSize, ranges) - images&#xff1a;输入图像列表&#xff08;必须用[ ]包裹&#xff09;&a…...

应用案例|兵器重工:某体系需求视图模型开发

某体系需求视图模型开发 一、项目背景 本项目为某体系的需求视图模型开发&#xff0c;其中体系设计建模过程可以分解为7大部分&#xff0c;即建模前期准备、全景视点模型正向设计、能力视点模型正向设计、作战视点模型正向设计、系统视点模型正向设计、体系模型反向追溯设计以…...

YOLOv8改进:ShapeIoU与InnerShapeIoU损失函数的理论与实践

文章目录 YOLOv8 损失函数概述ShapeIoU 与 InnerShapeIoU 损失介绍ShapeIoU 损失InnerShapeIoU 损失 ShapeIoU 和 InnerShapeIoU 损失函数的实现ShapeIoU 损失函数代码实现InnerShapeIoU 损失函数代码实现损失函数在 YOLOv8 中的应用 实验效果与分析ShapeIoU 和 InnerShapeIoU …...

用Go语言正则,如何爬取数据

文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons&#xff1a;JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram&#xff0c;自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 &#xff1f; 5 IDEA必装的插件&…...

Java中实现单例模式的多种方法:原理、实践与优化

单例模式&#xff08;Singleton Pattern&#xff09;是设计模式中最简单且最常用的模式之一&#xff0c;旨在确保一个类只有一个实例&#xff0c;并提供全局访问点。在 Java 开发中&#xff0c;单例模式广泛应用于配置管理、日志记录、数据库连接池和线程池等场景。然而&#x…...

Pikachu靶场-RCE漏洞

1. RCE漏洞原理 核心问题&#xff1a;应用程序未对用户输入进行严格过滤&#xff0c;直接将输入内容拼接至系统命令、代码执行函数或反序列化过程中。常见触发场景&#xff1a;命令注入&#xff1a;用户输入被拼接到操作系统命令&#xff08;如system()、exec()&#xff09;。代…...

OpenCv高阶(七)——图像拼接

目录 一、图像拼接的原理过程 1. 特征检测与描述&#xff08;Feature Detection & Description&#xff09; 2. 特征匹配&#xff08;Feature Matching&#xff09; 3. 图像配准&#xff08;Image Registration&#xff09; 4. 图像变换与投影&#xff08;Warping&…...

​​电商系统用户需求报告(示例)

目录 电商系统用户需求报告​​ ​​1. 引言​​ 1.1 目的 1.2 范围 ​​2. 用户角色与核心需求​​ ​​2.1 消费者​​ ​​2.2 商家​​ ​​2.3 平台管理方​​ ​​3. 非功能性需求​​ ​​4. 业务流程​​ ​​4.1 消费者购物流程​​ ​​4.2 商家入驻流程…...

图像挖掘课程笔记-第一章:了解机器视觉

一、什么是图像挖掘&#xff08;Image Mining&#xff09;&#xff1f; 图像挖掘是一种从大量图像中自动提取有用信息、知识或模式的技术&#xff0c;它融合了图像处理、机器学习、数据库、人工智能、数据挖掘等多个领域的内容。 &#x1f9e0; 图像挖掘与图像处理的区别 图像…...

Spring集合注入Bean

Spring框架中实现Bean集合注入的详细方法 1. 基础自动注入方式1.1 使用Autowired注入List1.2 使用Autowired注入Map 2. 更精细的控制方式2.1 使用Qualifier进行筛选2.2 使用自定义注解筛选 3. Java配置类方式4. 排序注入的Bean集合4.1 使用Order注解4.2 实现Ordered接口 5. 条件…...

实验一 进程控制实验

一、实验目的 1、掌握进程的概念&#xff0c;理解进程和程序的区别。 2、认识和了解并发执行的实质。 3、学习使用系统调用fork()创建新的子进程方法&#xff0c;理解进程树的概念。 4、学习使用系统调用wait()或waitpid()实现父子进程同步。 5、学习使用getpid()和getppi…...

[预备知识]4. 概率基础

概率基础 本章节介绍深度学习中的概率基础知识&#xff0c;包括基本概念、概率分布和统计推断。 1. 概率基础 1.1 基本概念 随机变量&#xff1a;可以取不同值的变量&#xff0c;其值由随机试验的结果决定概率分布&#xff1a;描述随机变量取值的可能性分布条件概率&#x…...

第33周JavaSpringCloud微服务 电商进阶开发

一、课程介绍 1. 定时任务 课程主题 &#xff1a;Spring Cloud 电商进阶开发定时任务定义 &#xff1a;学习什么是定时任务。定时任务学习内容 &#xff1a;定时任务实现方法、cron 表达式。定时任务实践 &#xff1a;在 Spring 中使用 schedule 注解&#xff0c;定期关闭过期…...

基于cubeMX的hal库STM32实现硬件IIC通信控制OLED屏

1、通常的方法是使用软件模拟IIC来实现OLED屏的显示控制&#xff0c;这里用STM32单片机的硬件IIC来实现OLED屏的显示&#xff0c;主控芯片为STM32F103RCT6&#xff0c;正点原子mini开发板。 2、cubemx配置过程 &#xff08;1&#xff09;配置时钟和下载 &#xff08;2&#x…...

游戏工作室为何要更换IP进行多开?工作室使用代理IP要注意什么?

在当今的游戏产业中&#xff0c;游戏工作室为了提升效率、规避风险或突破平台限制&#xff0c;常常需要通过更换IP进行多开操作。这一现象背后涉及技术、商业规则和网络安全等多重因素&#xff0c;而代理IP的选择与使用也成为工作室运营中的关键环节。以下是关于游戏工作室为何…...

postgreSQL 如何使用 dblink

SELECT b.id, flow_name, user_id,u.name FROM bpm_form_info b JOIN vrms_user u on b.user_idu.id dblink SELECT b.id, flow_name, user_id,u.name FROM bpm_form_info b – vrms_user u on b.user_idu.id JOIN dblink( ‘dbnameuser_db userpostgres passwordWs199612’,…...

121.在 Vue3 中使用 OpenLayers 实现去掉鼠标右键默认菜单并显示 Feature 信息

🎯 实现效果 👇 本文最终实现的效果如下: ✅ 地图初始化时绘制一个多边形; ✅ 鼠标 右键点击地图任意位置; ✅ 若命中 Feature,则弹出该图形的详细信息; ✅ 移除浏览器默认的右键菜单,保留地图交互的完整控制。 💡 整个功能基于 Vue3 + OpenLayers 完成,采用 Com…...

复盘20250422

深度分析及个股推荐 1. 行业前景与个股逻辑梳理 从提供的股票信息来看&#xff0c;主要涉及以下行业&#xff1a;合成尼古丁&#xff08;电子烟&#xff09;、化工、跨境支付、跨境电商、农药、食品饮料、光刻机、电子商务、造纸等。需结合行业景气度、政策支持、公司核心竞争…...

MQ底层原理

RabbitMQ 概述 RabbitMQ 是⼀个开源的⾼性能、可扩展、消息中间件&#xff08;Message Broker&#xff09;&#xff0c;实现了 Advanced Message Queuing Protocol&#xff08;AMQP&#xff09;协议&#xff0c;可以帮助不同应⽤程序之间进⾏通信和数据交换。RabbitMQ 是由 E…...

30分钟编写十大排序算法完成

import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List;//排序算法 public class test_04_22 {public static void swap(int[] nums, int i, int j){int temp nums[i];nums[i] nums[j];nums[j] temp;}//冒泡排序-稳定…...

为什么家电主板采用GND走线而不是整面铺GND铜

不管什么接地方式&#xff0c;本质是为了使得电流的回流路径最短。只要电流的回流路径最短&#xff0c;怎么都可以&#xff01; 如下图的芯片的一个信号的回流路径&#xff0c;是一个很糟糕的接地&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&a…...

NVIDIA 自动驾驶技术见解

前言 参与 NVIDIA自动驾驶开发者实验室 活动&#xff0c;以及解读了 NVIDIA 安全报告 自动驾驶 白皮书&#xff0c;本文是我的一些思考和见解。自动驾驶技术的目标是为了改善道理安全、减少交通堵塞&#xff0c;重塑更安全、高效、包容的交通生态。在这一领域&#xff0c;NVI…...

真我推出首款 AI 翻译耳机,支持 32 种语言翻译

2025 年 4 月 22 日&#xff0c;真我手机官微宣布&#xff0c;其首款 AI 翻译耳机 Buds Air7 Pro 将于 4 月 23 日 16 时正式上市1。这款耳机接入了讯飞星火认知大模型 4.0 Ultra&#xff0c;支持中文与 32 种语言面对面翻译&#xff0c;以及同声传译功能。 除了 AI 翻译功能&a…...

如何简化复杂流程提升执行效率

简化复杂流程、提升执行效率的关键在于&#xff1a;聚焦核心目标、减少冗余环节、推动系统自动化、赋能一线决策、流程分级设计。其中&#xff0c;聚焦核心目标 是流程优化的第一步。流程不该为了“流程而流程”&#xff0c;而应服务于业务目标。Gartner在《数字化运营报告》中…...

动态规划算法:完全背包类问题

前言 现在我们考虑下面的问题&#xff1a; &#xff08;1&#xff09;小明有一个背包&#xff0c;背包容积为v&#xff0c;有m种物品&#xff0c;其中第i种物品的价值为val[i]&#xff0c;体积为t[i]&#xff0c;每样物品有无限个&#xff0c;请问背包内物品总价值最大为多少?…...

数据存储方式补码原码反码

1. 关于数据存储&#xff08;补码、原码、反码&#xff09; 有符号类型&#xff08;Signed Types&#xff09; 存储方式&#xff1a;现代计算机普遍采用 补码&#xff08;Two’s Complement&#xff09; 存储有符号整数。 原码&#xff1a;最高位为符号位&#xff08;0正&…...

【AAudio】A2dp sink创建音频轨道的源码流程分析

一、AAudio概述 AAudio 是 Android 8.0(API 级别 26)引入的 C/C++ 原生音频 API,专为需要低延迟、高性能音频处理的应用设计,尤其适用于实时音频应用(如音频合成器、音乐制作工具、游戏音效等)。 1.1 主要特点 低延迟:通过减少音频数据在内核与用户空间之间的拷贝,直…...

黑马点评之Feed流技术实现关注推送与滚动分页查询

Feed流 关注推送也叫做Feed流&#xff0c;直译为“投喂”。为用户持续的提供“沉浸式体验”&#xff0c;通过无限下拉刷新获取新的信息。 Feed流&#xff08;信息流&#xff09;是一种常见的内容分发形式&#xff0c;通过动态更新的内容列表向用户展示个性化或实时信息。典型应…...

vue3+canvas裁剪框样式【前端】

目录 canvas绘制裁剪框&#xff1a;拖拽改变框的大小&#xff1a;圆圈样式&#xff1a;方块样式&#xff1a; canvas绘制裁剪框&#xff1a; // 绘制裁剪框 const drawCropRect (ctx: CanvasRenderingContext2D): void > {if (cropRect.value.width > 0 && crop…...

Python 设计模式:模板模式

1. 什么是模板模式&#xff1f; 模板模式是一种行为设计模式&#xff0c;它定义了一个操作的算法的骨架&#xff0c;而将一些步骤延迟到子类中。模板模式允许子类在不改变算法结构的情况下&#xff0c;重新定义算法的某些特定步骤。 模板模式的核心思想是将算法的固定部分提取…...

usb2.0的硬件知识(一)

一、USB2.0的硬件知识 1.1 USB2.0速率 USB 2.0协议支持3种速率&#xff1a;低速(Low Speed&#xff0c;1.5Mbps)、全速(Full Speed, 12Mbps)、高速(High Speed, 480Mbps)&#xff1b;USB Hub、USB设备&#xff0c;也分为低速、全速、高速三种类型。 1.2 USB2.0硬件线序组成 U…...

LangGraph(二)——QuickStart样例中的第二步

目录 1. 添加依赖2. 官网QuickStart——第二步&#xff1a;用工具增强聊天机器人2.1 Tavily Search2.2 简单测试Tavily Search2.3 添加带工具的ChatBot node2.4 添加tool node2.5 添加条件边2.6 可视化StateGraph2.7 构建聊天循环 参考 1. 添加依赖 LangGraph(一)——QuickStar…...

机器学习第二篇 多变量线性回归

数据集&#xff1a;世界幸福指数数据集中的变量有幸福指数排名、国家/地区、幸福指数得分、人均国内生产总值、健康预期寿命、自由权、社会支持、慷慨程度、清廉指数。我们选择GDP per Capita和Freedom&#xff0c;来预测幸福指数得分。 文件一&#xff1a;linear&#xff0c;…...

【MCP Node.js SDK 全栈进阶指南】中级篇(3):MCP高级资源设计

前言 在MCP TypeScript-SDK的初级篇中,我们介绍了资源开发的基础知识,包括静态资源与动态资源的创建、资源模板设计与参数提取,以及基本的资源列表与发现机制。随着应用规模的扩大和复杂性的提高,我们需要更加高级的资源设计方案来应对各种挑战。 本文作为中级篇的第三篇…...