摘要: 案例:mp3是16k采样率,16bit深度的,那么码率不应该是32kBps吗,为什么可以选16kbps 这是一个非常好的问题,它触及了数字音频编码的核心概念:原始数据量和压缩编码之间的区别。 你的计算完全正确,但只适用于未经压缩的原始音频。 1. 你的计算:未经压缩的音频(如WAV文件) 对于一个未 阅读全文
posted @ 2025-10-31 03:16 FBshark 阅读(4) 评论(0) 推荐(0)
摘要: 链接:https://blog.csdn.net/vor234/article/details/138387195?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522dac311b95071f02fedec5ea5a048fdf6%252 阅读全文
posted @ 2025-10-29 03:08 FBshark 阅读(6) 评论(0) 推荐(0)
摘要: 首先是初始化 I2S 设备中,可能用到了缓存 //初始化 I2S 设备 INMP441 Serial.println("Setup I2S ..."); i2s_install(); i2s_setpin(); esp_err_t err = i2s_start(I2S_PORT_0); 其中的 i 阅读全文
posted @ 2025-10-29 01:19 FBshark 阅读(5) 评论(0) 推荐(0)
摘要: 这个函数通过以下几个条件来综合判定TTS播放结束: 主要判定逻辑: 1. 缓冲区数据检查 c #if NET_AUDIO_PLAY_BY_MP3 if (xStreamBufferBytesAvailable(mp3_player) == 0) // 播放完成 #elif NET_AUDIO_PLA 阅读全文
posted @ 2025-10-28 12:10 FBshark 阅读(3) 评论(0) 推荐(0)
摘要: Queue 在 FreeRTOS 中的专指 是的,在 FreeRTOS 的语境下,Queue 这个词绝大多数时候是特指“消息队列”(Message Queue)。当API函数、数据类型或文档中提到 "Queue" 时,它们指的就是这个用于任务间通信的核心机制。 但这引出了一个更深层次的问题:为什么它 阅读全文
posted @ 2025-10-28 12:04 FBshark 阅读(7) 评论(0) 推荐(0)
摘要: 实验:https://www.bilibili.com/opus/1126928057651691553 INMP441 数据手册:https://www.digikey.cn/htmldatasheets/production/1431884/0/0/1/inmp441-datasheet.htm 阅读全文
posted @ 2025-10-28 02:13 FBshark 阅读(17) 评论(0) 推荐(0)
摘要: 在C++中,const类型的变量默认具有内部链接性,因此可以安全地定义在.h文件中被多个.cpp文件包含。 基本用法 cpp 复制 下载 // constants.h const int MAX_SIZE = 100; const double PI = 3.14159; const std::st 阅读全文
posted @ 2025-10-28 01:49 FBshark 阅读(12) 评论(0) 推荐(0)
摘要: 一、Base64的编码规则 Base64编码的核心目标是将二进制数据转换成由64个可打印ASCII字符组成的文本。 这64个字符是: 26个大写字母: A-Z 26个小写字母: a-z 10个数字: 0-9 2个符号: + 和 / 填充符: = (用于末尾填充,不属于64个字符之内) 编码步骤如下: 阅读全文
posted @ 2025-10-28 01:34 FBshark 阅读(10) 评论(0) 推荐(0)
摘要: 接口要求 集成语音听写流式API时,需按照以下要求。 内容 说明 请求协议 ws[s](为提高安全性,强烈推荐wss) 请求地址 中英文(推荐使用):ws[s]: //iat-api.xfyun.cn/v2/iat中英文:ws[s]: //ws-api.xfyun.cn/v2/iat (上面这两有啥 阅读全文
posted @ 2025-10-27 23:57 FBshark 阅读(14) 评论(0) 推荐(0)
摘要: 【ESP32S3接入讯飞在线语音识别】 1. 前言 1.1 步骤概括 1.2 硬件介绍 1.3 接线 2. 操作流程 2.1 创建语音识别应用 2.2 记录API秘钥 3. JSON语音接入api 3.1 JSON格式 3.2 交互流程 3.2 ESP32S3 Sense接入代码 1. 核心功能 2 阅读全文
posted @ 2025-10-27 23:12 FBshark 阅读(31) 评论(0) 推荐(0)
摘要: 在各种大模型的API文档中,经常会用到 curl 工具,那么——如何运行 curl 脚本呢? 在Linux平台 对于复杂的代码,建议创建脚本文件: # 创建脚本文件 nano myscript.sh 然后执行以下指令 # 在文件中粘贴代码,然后保存退出 chmod +x myscript.sh # 阅读全文
posted @ 2025-10-27 20:06 FBshark 阅读(11) 评论(0) 推荐(0)
摘要: #if VOICE_PLAY_BY_UART /**************** * 播报器参数初始化 * * * * **/ void audio_player_param_init() { outside_init_stream(&mp3_player, &mp3_player_end, IOT 阅读全文
posted @ 2025-10-27 00:09 FBshark 阅读(5) 评论(0) 推荐(0)
摘要: FreeRTOS StreamBuffer 详解 概述 StreamBuffer(流缓冲区)是 FreeRTOS 提供的一种轻量级数据流传输机制,用于在任务间或中断与任务间高效传输字节流数据。 基本特性 1. 数据结构 字节流存储: 以 FIFO 方式存储字节数据 单读写者: 设计为单生产者单消费者 阅读全文
posted @ 2025-10-27 00:04 FBshark 阅读(8) 评论(0) 推荐(0)
摘要: CI130x ALG SDK库中的audio_play_os_state_t audio_play_semaphore_give(audio_play_os_sem_t xSemaphore)函数是对 FreeRTOS 内置函数 xSemaphoreGive()的简单封装 /** * @brief 阅读全文
posted @ 2025-10-26 21:57 FBshark 阅读(7) 评论(0) 推荐(0)
摘要: 一句话概括 xQueueCreate 是 FreeRTOS 实时操作系统中用于动态创建消息队列的函数。它负责分配内存并返回一个可以用于发送和接收数据的队列句柄。 详细解释 1. 什么是消息队列? 在深入函数本身之前,理解“队列”的概念至关重要。你可以把它想象成一个管道或传送带: 生产者:任务或中断服 阅读全文
posted @ 2025-10-26 21:34 FBshark 阅读(11) 评论(0) 推荐(0)