行空板M10集成百度与讯飞双语音引擎:嵌入式AI语音交互实践
1. 项目概述当行空板M10遇上双语音引擎最近在折腾行空板M10一个想法冒了出来能不能让这块板子同时“听懂”百度又能“开口说”讯飞听起来像是给一个设备装了两个“大脑”一个负责听一个负责说。这可不是简单的功能堆砌而是想探索在资源受限的嵌入式环境下如何灵活集成不同厂商的AI服务实现更强大的语音交互能力。对于做智能硬件、教育机器人或者创意交互装置的朋友来说这种“混搭”方案往往能结合各家所长比如百度的语音识别在中文场景下的高准确率和讯飞语音合成在音色、自然度上的优势。行空板M10本身是一款面向Python编程学习和物联网开发的高性能开源硬件它运行着完整的Linux系统这为我们调用复杂的云端API提供了可能。这个项目的核心就是利用Python作为粘合剂在行空板上分别调用百度AI开放平台的语音识别ASR和科大讯飞开放平台的语音合成TTS服务构建一个既能听百度又能说讯飞的完整语音交互终端。我把自己从环境搭建、API调试到代码封装、实际测试的完整过程记录下来其中遇到的网络超时、音频格式转换、资源占用等问题和解决方案才是真正有价值的干货。2. 行空板M10开发环境与核心思路解析2.1 硬件平台与开发环境准备行空板M10可以看作是一台微型电脑其基于全志H616主控配备了1GB RAM和8GB eMMC存储运行着基于Debian的定制Linux系统。这意味着我们可以在上面使用pip安装Python库就像在普通电脑上一样。首先需要通过SSH或者直连屏幕键盘进入行空板的终端。开发环境的核心是Python3。行空板通常已经预装了Python3。我们需要确保pip是最新版本并安装必要的依赖库。一个关键的库是pyaudio或sounddevice用于录制和播放音频。但由于行空板的音频架构和依赖问题直接安装标准的pyaudio可能会失败。更稳定的方案是使用系统自带的ALSA工具或者安装python3-pyaudio包如果软件源提供。我的经验是优先使用系统的包管理器sudo apt update sudo apt install python3-pip python3-dev portaudio19-dev -y pip3 install --upgrade pip对于音频播放一个轻量且可靠的选择是pygame库它对音频格式的支持比较友好。同时我们需要安装用于网络请求的requests库和处理JSON数据的库。pip3 install requests pygame注意行空板的存储空间和算力有限避免安装过于庞大或带有复杂图形依赖的库。如果pyaudio安装失败不必纠结后续我们可以通过调用系统命令如arecord和aplay来录制和播放WAV文件虽然灵活性稍差但稳定性极高。2.2 双云服务集成架构设计这个项目的架构思路是“各司其职异步协作”。整个语音交互流程可以拆解为以下几个核心环节我画了一个简单的逻辑图在脑子里本地音频采集通过行空板的麦克风阵列录制一段语音例如5秒保存为标准的PCM WAV文件。这里要特别注意采样率、位深和声道数必须与后续云服务API的要求对齐。百度语音识别ASR将录制好的WAV文件读取为二进制数据通过HTTP POST请求发送到百度语音识别API的端点。百度云服务会分析音频返回识别出的文本结果。文本处理与逻辑判断在本地Python代码中接收并解析百度返回的文本。这里可以加入简单的自然语言处理NLP比如判断用户说的是“打开灯”还是“今天天气怎么样”根据指令执行相应操作或生成需要播报的回复文本。讯飞语音合成TTS将需要播报的文本例如“已为您打开灯”或查询到的天气信息通过调用讯飞语音合成API生成一段音频文件通常是MP3格式或直接返回音频流。本地音频播报将讯飞返回的音频数据如果是MP3可能需要先解码通过行空板的扬声器播放出来。关键在于百度和讯飞的服务是独立的通过我们本地的Python脚本串联。这种设计的优势在于灵活性你可以随时替换其中任何一个服务提供商例如将百度ASR换成阿里云的或者将讯飞TTS换成腾讯云的而整体框架几乎不用改动。难点在于处理不同API的认证方式百度用API Key和Secret Key讯飞用APPID和API Key、数据格式和网络异常。3. 核心API申请与配置要点3.1 百度智能云语音技术接入首先需要在百度AI开放平台创建应用。访问百度AI开放平台官网注册登录后进入“控制台”在“语音技术”品类下创建新应用。创建成功后你会获得三个关键信息APP_ID、API_KEY和SECRET_KEY。百度语音识别服务有每日免费调用额度对于学习和原型开发完全足够。百度语音识别API支持多种格式但对于实时性要求不高的场景我们采用“完整音频文件识别”的方式最为简单可靠。API要求音频格式为pcm、wav、amr等采样率16000或8000单声道。在我们的项目中录制为16kHz、16bit、单声道的WAV文件是兼容性最好的选择。认证流程是调用百度API的第一个小坑。百度使用OAuth2.0客户端凭证模式需要先用API_KEY和SECRET_KEY获取一个有时效性的access_token。这个token在有效期内通常为30天可以反复用于所有语音识别请求。因此我们的代码里需要有一个获取和缓存token的逻辑避免每次识别都去获取一次浪费时间和资源。3.2 科大讯飞开放平台语音合成配置讯飞开放平台的接入流程类似。注册登录后在控制台创建新应用选择“语音合成”服务。讯飞的关键凭证是APPID、APIKey和APISecret。讯飞的认证机制与百度不同它使用基于HMAC-SHA256的签名机制并且签名信息需要放在HTTP请求头中。讯飞语音合成API的输入是文本输出可以是MP3、WAV等格式的音频文件。我们需要在请求中指定发音人如“xiaoyan”为青年女声“xiaoyu”为青年男声、语速、音调、音量等参数。一个重要的细节是讯飞API对单次请求的文本长度有限制通常为一定字节数如果合成的文本很长需要先做切分处理。将两者的配置信息妥善保存绝对不要直接硬编码在Python脚本里然后上传到公开的代码仓库。最佳实践是创建一个名为config.py或使用环境变量的方式来管理这些敏感信息。# config.py 示例 BAIDU_APP_ID ‘你的百度APP_ID‘ BAIDU_API_KEY ‘你的百度API_KEY‘ BAIDU_SECRET_KEY ‘你的百度SECRET_KEY‘ XFYUN_APP_ID ‘你的讯飞APPID‘ XFYUN_API_KEY ‘你的讯飞APIKey‘ XFYUN_API_SECRET ‘你的讯飞APISecret‘4. 关键代码模块实现与解析4.1 音频采集与预处理模块在行空板上进行可靠的音频采集我推荐使用系统命令arecord。虽然不如pyaudio编程灵活但它避免了复杂的驱动和依赖问题。我们可以用Python的subprocess模块来调用它。import subprocess import os def record_audio(filename“recording.wav“, duration5, rate16000): “““ 使用arecord命令录制音频。 :param filename: 输出文件名 :param duration: 录制时长秒 :param rate: 采样率Hz :return: 录制文件的路径如果失败返回None “““ command [ ‘arecord‘, ‘-D‘, ‘hw:0,0‘, # 指定声卡设备行空板通常为此 ‘-f‘, ‘S16_LE‘, # 采样格式16位小端 ‘-r‘, str(rate), # 采样率 ‘-c‘, ‘1‘, # 单声道 ‘-d‘, str(duration), filename ] try: print(f“开始录制{duration}秒音频...“) subprocess.run(command, checkTrue, timeoutduration2) print(“录制完成。“) if os.path.exists(filename) and os.path.getsize(filename) 0: return filename else: print(“录制文件异常。“) return None except subprocess.CalledProcessError as e: print(f“录制命令执行失败: {e}“) return None except subprocess.TimeoutExpired: print(“录制过程超时。“) return None录制完成后我们得到了一个标准的WAV文件。但百度API在接收时有时需要将WAV文件转换为PCM原始数据即去掉WAV文件头。或者我们可以直接使用arecord录制为.pcm文件。这里需要根据百度API文档的具体要求来调整。一个更通用的方法是在代码中读取WAV文件提取其中的音频数据部分。4.2 百度语音识别服务调用封装这个模块负责获取token、读取音频文件并调用识别接口。import requests import json from config import BAIDU_APP_ID, BAIDU_API_KEY, BAIDU_SECRET_KEY class BaiduASR: def __init__(self): self.token_url “https://aip.baidubce.com/oauth/2.0/token“ self.asr_url “https://vop.baidubce.com/server_api“ self.api_key BAIDU_API_KEY self.secret_key BAIDU_SECRET_KEY self.access_token None self._get_token() def _get_token(self): “““获取并缓存Access Token。“““ params { ‘grant_type‘: ‘client_credentials‘, ‘client_id‘: self.api_key, ‘client_secret‘: self.secret_key } try: response requests.post(self.token_url, paramsparams) response.raise_for_status() self.access_token response.json().get(‘access_token‘) if not self.access_token: raise Exception(“未能获取到access_token“) print(“百度Token获取成功。“) except Exception as e: print(f“获取百度Token失败: {e}“) self.access_token None def recognize(self, audio_file_path): “““识别音频文件中的语音。“““ if not self.access_token: print(“Token无效无法识别。“) return None # 读取音频文件并转换为base64编码根据API要求 with open(audio_file_path, ‘rb‘) as f: speech_data f.read() import base64 speech_base64 base64.b64encode(speech_data).decode(‘utf-8‘) # 构造请求参数 payload { ‘format‘: ‘wav‘, # 根据实际文件格式修改如‘pcm‘ ‘rate‘: 16000, # 采样率必须与录制时一致 ‘channel‘: 1, # 声道数 ‘cuid‘: ‘xingkong_m10‘, # 设备标识可自定义 ‘token‘: self.access_token, ‘speech‘: speech_base64, ‘len‘: len(speech_data) # 原始数据长度 } headers {‘Content-Type‘: ‘application/json‘} try: response requests.post(self.asr_url, jsonpayload, headersheaders) result response.json() if result.get(‘err_no‘) 0: text result[‘result‘][0] print(f“识别结果: {text}“) return text else: print(f“识别失败错误码: {result.get(‘err_no‘)}, 信息: {result.get(‘err_msg‘)}“) return None except requests.exceptions.RequestException as e: print(f“网络请求异常: {e}“) return None except json.JSONDecodeError: print(“API返回非JSON响应。“) return None实操心得百度API的返回结果中err_no为0表示成功识别文本在result列表的第一个元素中。网络超时和Token失效是两大常见问题。在实际部署中最好加入Token的自动刷新机制即在每次识别前检查Token是否即将过期或已失效并重新获取。4.3 讯飞语音合成服务调用封装讯飞API的调用稍复杂需要生成签名。签名算法是固定的但我们可以将其封装成一个函数。import hashlib import hmac import base64 from urllib.parse import urlencode from datetime import datetime from config import XFYUN_APP_ID, XFYUN_API_KEY, XFYUN_API_SECRET class XunfeiTTS: def __init__(self): self.app_id XFYUN_APP_ID self.api_key XFYUN_API_KEY self.api_secret XFYUN_API_SECRET self.url “https://tts-api.xfyun.cn/v2/tts“ def _get_auth_url(self): “““生成带签名的完整请求URL。“““ # 生成RFC1123格式的时间戳 date datetime.utcnow().strftime(‘%a, %d %b %Y %H:%M:%S GMT‘) # 拼接签名原始字符串 signature_origin f“host: tts-api.xfyun.cn\ndate: {date}\nGET /v2/tts HTTP/1.1“ # 使用APISecret进行HMAC-SHA256加密然后base64编码 signature_sha hmac.new(self.api_secret.encode(‘utf-8‘), signature_origin.encode(‘utf-8‘), digestmodhashlib.sha256).digest() signature base64.b64encode(signature_sha).decode(‘utf-8‘) # 拼接Authorization header的原始字符串 authorization_origin f‘api_key“{self.api_key}“, algorithm“hmac-sha256“, headers“host date request-line“, signature“{signature}”‘ authorization base64.b64encode(authorization_origin.encode(‘utf-8‘)).decode(‘utf-8‘) # 将认证信息编码到URL的查询参数中 query_params { ‘authorization‘: authorization, ‘date‘: date, ‘host‘: ‘tts-api.xfyun.cn‘ } return f“{self.url}?{urlencode(query_params)}“ def synthesize(self, text, voice_name“xiaoyan“, output_file“output.mp3“): “““将文本合成为语音并保存为文件。“““ if not text: print(“合成文本为空。“) return False # 构造请求体 payload { “common“: { “app_id“: self.app_id }, “business“: { “aue“: “lame“, # 输出mp3格式 “sfl“: 1, # 流式返回 “auf“: “audio/L16;rate16000“, # 音频参数 “vcn“: voice_name, # 发音人 “speed“: 50, # 语速范围0-100 “volume“: 50, # 音量范围0-100 “pitch“: 50, # 音高范围0-100 “bgs“: 0, # 背景音开关0为关闭 }, “data“: { “text“: base64.b64encode(text.encode(‘utf-8‘)).decode(‘utf-8‘), “status“: 2 # 固定值表示文本结束 } } request_url self._get_auth_url() headers {‘Content-Type‘: ‘application/json‘} try: response requests.post(request_url, jsonpayload, headersheaders) if response.status_code 200: # 讯飞返回的是二进制音频数据流 content_type response.headers.get(‘Content-Type‘, ‘‘) if ‘audio/mpeg‘ in content_type: with open(output_file, ‘wb‘) as f: f.write(response.content) print(f“语音合成成功已保存至: {output_file}“) return output_file else: # 可能是错误信息 error_info response.json() print(f“合成失败返回: {error_info}“) return False else: print(f“请求失败状态码: {response.status_code}, 响应: {response.text}“) return False except Exception as e: print(f“语音合成过程发生异常: {e}“) return False4.4 音频播放与主循环逻辑合成得到MP3文件后我们需要在行空板上播放。可以使用pygame.mixer或调用系统命令mpg321、ffplay。这里使用pygame因为它与我们的Python环境集成更好。import pygame import time def play_audio(file_path): “““使用pygame播放音频文件。“““ try: pygame.mixer.init(frequency16000) # 初始化混音器指定频率 pygame.mixer.music.load(file_path) pygame.mixer.music.play() # 等待播放完毕 while pygame.mixer.music.get_busy(): time.sleep(0.1) print(“播放完毕。“) except Exception as e: print(f“播放音频失败: {e}“) finally: pygame.mixer.quit()最后我们将所有模块串联起来形成一个简单的交互循环def main_loop(): baidu_asr BaiduASR() xunfei_tts XunfeiTTS() while True: input(“按下回车键开始录音...按CtrlC退出“) # 1. 录音 audio_file record_audio(“user_input.wav“, duration5) if not audio_file: continue # 2. 百度识别 text baidu_asr.recognize(audio_file) if not text: print(“未识别到有效指令请重试。“) continue # 3. 简单逻辑处理示例回声 reply_text f“你说的是{text}“ print(f“将回复: {reply_text}“) # 4. 讯飞合成 tts_file xunfei_tts.synthesize(reply_text, output_file“reply.mp3“) if tts_file: # 5. 播放 play_audio(tts_file) # 清理临时文件可选 # import os # os.remove(audio_file) # os.remove(tts_file) if __name__ “__main__“: main_loop()5. 部署优化与常见问题排查5.1 性能优化与稳定性提升在资源有限的行空板上运行优化至关重要。减少磁盘I/O上述流程中我们多次读写文件录音WAV、合成MP3。对于实时性要求更高的场景可以尝试使用管道或内存流让音频数据在内存中传递避免磁盘读写延迟。例如将arecord的输出直接通过管道传递给一个处理进程或者使用pyaudio直接操作音频缓冲区。异步处理主循环是同步的即“录-识-合-播”一步接一步。在识别或合成网络请求时程序会阻塞等待。可以使用Python的threading或asyncio模块将网络请求放入单独的线程或异步任务中这样在等待云端响应时可以准备下一次录音或处理其他逻辑提升响应速度。错误重试与降级网络请求可能失败。在recognize和synthesize方法中应加入重试机制例如最多重试3次。同时可以设计一个降级方案比如当讯飞TTS失败时尝试调用一个本地的、质量较差的离线TTS引擎或者直接打印文本保证核心流程不中断。资源清理循环中生成的音频文件会累积占用存储空间。需要在每次循环结束后或开始前清理旧的临时文件。5.2 典型问题与解决方案速查表在实际部署和测试中我遇到了不少坑这里总结一下问题现象可能原因排查步骤与解决方案arecord录制失败提示“设备忙”或“无法打开”。音频设备被其他进程占用或设备号不对。1. 运行aplay -l或arecord -l查看正确的声卡设备号修改-D参数如hw:1,0。2. 确保没有其他程序如桌面环境的声音服务在占用麦克风。可以尝试重启进程或系统。百度API返回错误码 3301音频质量差。录制音频采样率、格式不符或环境噪音太大。1. 确认record_audio函数中的rate、-f参数与百度API请求中的rate、format完全一致。2. 在安静环境下测试或为麦克风增加简单的软件降噪如使用sox库处理。百度API返回错误码 3300音频解码失败。音频文件可能损坏或文件头信息不正确。1. 用aplay recording.wav命令试播确认文件能正常播放。2. 尝试将WAV文件转换为纯PCM数据再上传。可以使用scipy.io.wavfile读取数据或者用ffmpeg转换。讯飞合成成功但返回错误JSON而非音频。请求参数错误或签名计算有误。1. 检查business字段中的参数值是否在允许范围内如语速0-100。2.重点检查签名生成函数。确保时间格式是GMT签名原始字符串的格式包括换行符完全符合文档示例。在线签名生成工具可以帮助比对。合成的MP3文件无法播放或杂音。音频编码参数不匹配或播放器不支持。1. 检查讯飞请求参数中的aue编码格式和auf音频参数。确保与播放代码如pygame初始化频率匹配。例如合成是16000Hz播放也应设为16000Hz。2. 尝试将aue改为raw输出PCM数据然后自己编码成WAV播放以排除编码问题。程序运行一段时间后卡死或无响应。内存泄漏或网络请求阻塞未设置超时。1. 为所有requests.post/get调用添加timeout参数如timeout10。2. 检查循环中是否有资源未释放如pygame mixer。确保每次播放后调用pygame.mixer.quit()。3. 使用htop命令监控行空板的内存使用情况。识别或合成速度很慢。行空板网络连接慢或云端服务器响应慢。1. 测试行空板的网络速度ping www.baidu.com。2. 考虑在本地对音频进行端点检测VAD只上传有声音的片段减少数据量。3. 对于固定回复可以将合成好的音频缓存起来下次直接播放避免重复调用TTS API。5.3 进阶扩展思路这个基础框架搭建好后有很多可以扩展的方向唤醒词与持续监听集成像Snowboy或Porcupine这样的离线唤醒词引擎实现“小X小X”这样的唤醒唤醒后再进入录音和识别流程更符合智能音箱的交互模式。本地命令词识别对于“开灯”、“关灯”等固定指令可以使用轻量级的本地语音识别库如Vosk实现无网络环境下的快速响应将云端识别作为复杂语句的备用方案。与物联网平台联动将识别到的文本指令如“打开客厅灯”解析为具体的MQTT主题和消息控制连接到行空板或同一网络下的智能设备真正实现语音控制智能家居。多轮对话与上下文引入简单的对话状态管理能够处理像“今天天气怎么样” - “上海” - “明天呢”这样的上下文关联问题。这需要维护一个会话上下文并在每次请求时将上下文信息传递给更高级的NLP API如百度UNIT或讯飞AIUI。在行空板M10上实现百度与讯飞语音服务的融合本质上是一次典型的嵌入式AI应用集成实践。它考验的不仅仅是调用API的能力更包括在受限环境下解决音频处理、网络通信、资源管理和错误恢复等综合性问题的能力。从最开始的“能跑通”到后来的“跑得稳”、“响应快”每一步优化都让我对嵌入式Python开发有了更深的理解。希望这份详细的记录和踩坑经验能帮你更快地实现自己的语音交互创意。

相关新闻

3D打印与激光切割融合制造:从设计到实战的混合制造指南

3D打印与激光切割融合制造:从设计到实战的混合制造指南

1. 从“加法”到“减法”:一次偶然发现的融合契机那天在工作室里,我正对着一个刚出炉的3D打印件发愁。这是一个为户外电源设计的外壳原型,功能上没问题,但外观上总差点意思——打印支撑留下的疤痕、层纹,还有几个需要高…

2026/7/29 1:38:56 阅读更多 →
MiniSpring框架学习笔记-Pointcut:如何批量匹配代理方法?

MiniSpring框架学习笔记-Pointcut:如何批量匹配代理方法?

MiniSpring框架学习笔记-Pointcut:如何批量匹配代理方法?19. Pointcut:如何批量匹配代理方法?一、先看最终效果二、先分清 Advice、Pointcut 和 Advisor三、定义 Pointcut 和 MethodMatcher四、按方法名实现切点五、用 PointcutAd…

2026/7/29 1:38:56 阅读更多 →
LangChain与Elasticsearch构建智能知识库实战

LangChain与Elasticsearch构建智能知识库实战

1. 项目概述在AI技术快速发展的今天,构建能够理解和处理专业知识的智能代理(agent)已成为许多企业和开发者的迫切需求。LangChain作为当前最热门的大语言模型应用框架,与Elasticsearch这一强大的搜索引擎相结合,可以打造出真正"懂行&quo…

2026/7/29 1:37:55 阅读更多 →

最新新闻

Arduino与ML8511紫外线传感器:从数据采集到环境监测的DIY实践

Arduino与ML8511紫外线传感器:从数据采集到环境监测的DIY实践

1. 项目缘起:为什么要在海盗船上加装紫外线检测?如果你和我一样,是个喜欢捣鼓各种电子小玩意儿的创客,那么“海盗船”这个项目对你来说可能并不陌生。它可能是一个桌面摆件,一个遥控玩具,或者像我这样&…

2026/7/29 1:49:00 阅读更多 →
研究生论文AI降重工具与技术策略全解析

研究生论文AI降重工具与技术策略全解析

1. 研究生学术写作工具现状解析2023年全球学术不端检测市场规模已达12.7亿美元,仅中国高校每年就有超过200万篇学位论文需要查重。在这个背景下,"降AI率"成为研究生群体新的刚需——指降低论文中被AI检测工具识别为机器生成内容的比例。传统查…

2026/7/29 1:49:00 阅读更多 →
ICG/RB/Cy3-Mannose,Cy3标记半乳糖的应用

ICG/RB/Cy3-Mannose,Cy3标记半乳糖的应用

名称: ICG-Mannose,吲哚菁绿标记甘露糖,IndocyanineGreen-Mannose RB-Mannose,罗丹明B标记甘露糖,RhodamineB-Mannose Cy3-Galactose,Cy3标记半乳糖,Cyanine3-Galactose 概述 荧光标记糖类化合物…

2026/7/29 1:49:00 阅读更多 →
在公司用 AI 写代码,你们上线的时候会不会有点慌?

在公司用 AI 写代码,你们上线的时候会不会有点慌?

前段时间在组里做技术评审,有个刚入职不久的后辈私下跑来问我:“老大,我最近写业务逻辑基本全靠 Cursor 和 Claude 辅助,虽然写起来是真快、单元测试也跑通了,但一到要切流量上生产环境的时候,心跳就莫名其…

2026/7/29 1:49:00 阅读更多 →
30天掌握AI大模型:从理论到实战的完整学习方案

30天掌握AI大模型:从理论到实战的完整学习方案

1. 项目概述:30天AI大模型学习方案的价值定位这个学习方案最吸引人的地方在于它打破了传统AI学习的高门槛。我见过太多想转行AI的朋友,面对海量理论教材和碎片化教程无从下手,最终半途而废。而这个方案用30天时间构建了完整的学习闭环&#x…

2026/7/29 1:49:00 阅读更多 →
Linux防坑指南:代码篇

Linux防坑指南:代码篇

场景一:为什么说“一切皆文件”?—— 用代码证明给你看原理简述Linux把硬件设备、目录、进程、socket都抽象成文件,意味着你可以用操作文件的函数(open/read/write/close)来操作硬件。这个设计让系统接口高度统一。代码…

2026/7/29 1:47:59 阅读更多 →

日新闻

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:00:23 阅读更多 →
AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础 在上一期「AI编程系列」中,我们学习了如何构建一个基础的 AI 问答系统,通过简单的输入输出让模型回应问题。但现实世界中的 AI 应用往往需要处理更复杂的场景:…

2026/7/29 0:00:23 阅读更多 →
AI智能体开发实战:从工具调用到企业级部署

AI智能体开发实战:从工具调用到企业级部署

1. 从被动问答到主动执行:AI Agent的范式转变过去两年,大语言模型最显著的应用形态是聊天机器人——用户提问,AI回答。但真正的生产力革命发生在2023年下半年:当AI学会主动调用工具完成任务时,生产力工具的历史被彻底改…

2026/7/29 0:00:23 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻