FRCRN语音降噪工具部署教程:Ubuntu+CUDA环境下GPU算力高效利用

news2026/3/20 4:42:01
FRCRN语音降噪工具部署教程UbuntuCUDA环境下GPU算力高效利用你是不是也遇到过这样的烦恼在咖啡馆、地铁上或者家里录制的语音背景噪音总是挥之不去人声听起来模糊不清。后期处理时用传统方法降噪要么效果不明显要么把人声也处理得怪怪的。今天要介绍的FRCRN语音降噪工具就能很好地解决这个问题。它基于阿里巴巴达摩院开源的先进模型专门处理单通道音频的降噪特别擅长对付各种复杂的背景噪声同时还能很好地保留清晰的人声。更重要的是这个工具支持GPU加速。如果你有一台带NVIDIA显卡的Ubuntu服务器就能充分发挥硬件性能让降噪处理快上加快。这篇教程就是手把手教你如何在UbuntuCUDA环境下部署和使用这个工具让你轻松获得专业级的语音降噪效果。1. 环境准备与快速部署在开始之前我们先看看需要准备什么。整个过程其实不复杂跟着步骤走半小时内就能搞定。1.1 硬件与系统要求首先确认你的环境是否符合要求操作系统Ubuntu 18.04或更高版本推荐20.04 LTS显卡NVIDIA GPU显存建议4GB以上内存至少8GB RAM存储空间至少10GB可用空间如果你用的是云服务器确保选择了带GPU的实例。本地机器的话确认显卡驱动已经安装好。1.2 安装NVIDIA驱动和CUDA这是利用GPU算力的关键一步。如果你已经装好了可以跳过这部分。检查当前驱动状态nvidia-smi如果看到显卡信息说明驱动已经安装。如果提示命令未找到需要先安装驱动。安装NVIDIA驱动以Ubuntu 20.04为例# 添加显卡驱动PPA sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update # 查看推荐的驱动版本 ubuntu-drivers devices # 安装推荐版本的驱动这里以nvidia-driver-470为例 sudo apt install nvidia-driver-470 # 重启系统 sudo reboot安装CUDA Toolkit# 访问NVIDIA官网下载对应版本的CUDA # 这里以CUDA 11.3为例选择runfile安装方式 wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.run sudo sh cuda_11.3.0_465.19.01_linux.run安装过程中记得选择安装CUDA Toolkit其他选项可以根据需要选择。配置环境变量# 编辑bashrc文件 nano ~/.bashrc # 在文件末尾添加 export PATH/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH/usr/local/cuda/lib64:$LD_LIBRARY_PATH # 保存后使配置生效 source ~/.bashrc验证CUDA安装nvcc --version1.3 安装Python和必要依赖接下来安装Python和相关库# 更新系统包 sudo apt update sudo apt upgrade -y # 安装Python3和pip sudo apt install python3 python3-pip -y # 安装FFmpeg用于音频格式处理 sudo apt install ffmpeg -y # 安装Python虚拟环境工具 sudo apt install python3-venv -y # 创建虚拟环境 python3 -m venv frcrn_env source frcrn_env/bin/activate1.4 安装PyTorch和ModelScope现在安装核心的Python包。注意要安装支持CUDA的PyTorch版本# 安装支持CUDA的PyTorch # 根据你的CUDA版本选择对应的命令 # CUDA 11.3对应以下命令 pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113 # 安装ModelScope pip install modelscope # 安装其他依赖 pip install librosa soundfile numpy验证PyTorch是否能识别GPUimport torch print(fPyTorch版本: {torch.__version__}) print(fCUDA是否可用: {torch.cuda.is_available()}) print(fGPU数量: {torch.cuda.device_count()}) print(f当前GPU: {torch.cuda.get_device_name(0)})如果看到CUDA可用并且显示了你的GPU型号说明环境配置成功。2. 获取和准备FRCRN项目环境准备好了现在来获取FRCRN项目代码。2.1 下载项目代码# 克隆项目如果已有Git git clone https://github.com/modelscope/modelscope.git cd modelscope # 或者直接下载ZIP包 wget https://github.com/modelscope/modelscope/archive/refs/heads/master.zip unzip master.zip cd modelscope-master2.2 准备测试音频FRCRN模型对输入音频有特定要求我们需要准备合适的测试文件音频要求采样率必须是16000 Hz16k声道单声道Mono格式建议使用.wav格式如果你手头没有合适的测试音频可以用以下方法创建方法一录制测试音频# 安装录音工具 sudo apt install sox # 录制10秒测试音频按CtrlC停止 rec test_noisy.wav rate 16k channels 1方法二转换现有音频如果你的音频不符合要求用FFmpeg转换# 转换为16k单声道wav ffmpeg -i your_audio.mp3 -ar 16000 -ac 1 input_noisy.wav # 查看转换后的音频信息 ffprobe input_noisy.wav方法三下载示例音频# 下载一个带噪音的示例音频 wget https://example.com/noisy_audio.wav -O input_noisy.wav2.3 项目结构说明了解项目结构有助于后续使用FRCRN/ ├── test.py # 主测试脚本 ├── requirements.txt # 依赖包列表 ├── README.md # 说明文档 └── examples/ # 示例文件 └── noisy_audio.wav # 示例音频3. 运行第一个降噪示例一切准备就绪现在来运行第一个降噪测试。3.1 基础使用方式进入项目目录运行测试脚本# 进入FRCRN目录 cd demos/speech_frcrn_ans_cirm_16k # 运行测试脚本 python test.py第一次运行会比较慢因为需要下载模型文件大约几百MB。下载完成后会在当前目录生成降噪后的音频。3.2 理解代码逻辑看看test.py里面做了什么#!/usr/bin/env python3 from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks # 创建降噪管道 ans_pipeline pipeline( Tasks.acoustic_noise_suppression, modeldamo/speech_frcrn_ans_cirm_16k ) # 指定输入输出文件 input_path examples/noisy_audio.wav output_path examples/denoised_audio.wav # 执行降噪 result ans_pipeline(input_path, output_pathoutput_path) print(f降噪完成输出文件: {output_path})这段代码做了三件事创建了一个降噪处理管道指定了输入和输出文件路径执行降噪并保存结果3.3 自定义输入输出如果你想处理自己的音频文件修改代码很简单from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks # 初始化管道 ans_pipeline pipeline( Tasks.acoustic_noise_suppression, modeldamo/speech_frcrn_ans_cirm_16k ) # 使用你自己的文件 your_input path/to/your/noisy_audio.wav your_output path/to/your/clean_audio.wav # 执行降噪 result ans_pipeline(your_input, output_pathyour_output) print(f你的音频已处理完成保存到: {your_output})4. 高级使用技巧掌握了基础用法后来看看一些提升使用体验的技巧。4.1 批量处理多个文件如果你有很多音频需要处理可以写个简单的批量处理脚本import os from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks def batch_denoise(input_dir, output_dir): 批量降噪处理 # 创建输出目录 os.makedirs(output_dir, exist_okTrue) # 初始化管道 ans_pipeline pipeline( Tasks.acoustic_noise_suppression, modeldamo/speech_frcrn_ans_cirm_16k ) # 遍历输入目录的所有wav文件 for filename in os.listdir(input_dir): if filename.endswith(.wav): input_path os.path.join(input_dir, filename) output_path os.path.join(output_dir, fclean_{filename}) print(f正在处理: {filename}) try: ans_pipeline(input_path, output_pathoutput_path) print(f✓ 完成: {filename}) except Exception as e: print(f✗ 处理失败 {filename}: {e}) print(所有文件处理完成) # 使用示例 batch_denoise(noisy_audios/, clean_audios/)4.2 监控GPU使用情况处理大量音频时可以监控GPU的使用情况# 在另一个终端窗口运行实时查看GPU状态 watch -n 1 nvidia-smi你会看到类似这样的输出----------------------------------------------------------------------------- | NVIDIA-SMI 470.141.03 Driver Version: 470.141.03 CUDA Version: 11.4 | |--------------------------------------------------------------------------- | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | || | 0 NVIDIA GeForce ... On | 00000000:01:00.0 Off | N/A | | 30% 45C P2 72W / 250W | 3421MiB / 8192MiB | 45% Default | | | | N/A | ---------------------------------------------------------------------------关注这几个指标GPU-UtilGPU使用率越高说明利用越充分Memory-Usage显存使用量TempGPU温度正常在40-80度之间4.3 性能优化建议为了让FRCRN跑得更快更好这里有几个小建议调整批处理大小# 如果显存足够大可以尝试增加批处理大小 ans_pipeline pipeline( Tasks.acoustic_noise_suppression, modeldamo/speech_frcrn_ans_cirm_16k, batch_size4 # 默认是1根据显存调整 )使用半精度浮点数减少显存使用加快计算import torch # 在初始化管道前设置 torch.set_float32_matmul_precision(medium) # 或 high ans_pipeline pipeline( Tasks.acoustic_noise_suppression, modeldamo/speech_frcrn_ans_cirm_16k )预处理音频文件import librosa import soundfile as sf def preprocess_audio(input_path, output_path): 预处理音频确保16k采样率单声道 audio, sr librosa.load(input_path, sr16000, monoTrue) sf.write(output_path, audio, 16000) return output_path # 使用预处理 clean_input preprocess_audio(your_audio.mp3, preprocessed.wav) result ans_pipeline(clean_input, output_pathdenoised.wav)5. 常见问题与解决方案在实际使用中你可能会遇到一些问题。这里整理了一些常见问题和解决方法。5.1 音频相关问题问题降噪后声音变调或有杂音这通常是因为输入音频的采样率不是16k。FRCRN不会自动重采样需要你先处理好。解决方案# 使用FFmpeg转换 ffmpeg -i original.wav -ar 16000 -ac 1 -c:a pcm_s16le input_16k.wav # 或者用Python处理 import librosa import soundfile as sf audio, sr librosa.load(original.wav, sr16000, monoTrue) sf.write(input_16k.wav, audio, 16000)问题处理后的音频音量太小模型降噪可能会降低整体音量可以后期调整# 使用FFmpeg增加音量提高10dB ffmpeg -i denoised.wav -af volume10dB louder.wav # 或者标准化音量 ffmpeg -i denoised.wav -af loudnormI-16:LRA11:TP-1.5 normalized.wav5.2 性能相关问题问题第一次运行特别慢这是正常的因为需要下载模型文件。模型文件大约几百MB下载完成后会缓存在本地后续运行就快了。查看模型缓存位置from modelscope.hub.snapshot_download import snapshot_download model_dir snapshot_download(damo/speech_frcrn_ans_cirm_16k) print(f模型缓存位置: {model_dir})问题GPU内存不足如果处理很长的音频或批量处理时遇到内存不足# 方法1使用CPU模式慢但稳定 ans_pipeline pipeline( Tasks.acoustic_noise_suppression, modeldamo/speech_frcrn_ans_cirm_16k, devicecpu # 强制使用CPU ) # 方法2分段处理长音频 def process_long_audio(input_path, output_path, chunk_duration30): 分段处理长音频每段30秒 import librosa import soundfile as sf import numpy as np audio, sr librosa.load(input_path, sr16000, monoTrue) chunk_samples chunk_duration * sr processed_chunks [] for i in range(0, len(audio), chunk_samples): chunk audio[i:i chunk_samples] # 保存临时文件 temp_input ftemp_input_{i}.wav temp_output ftemp_output_{i}.wav sf.write(temp_input, chunk, sr) # 处理当前片段 ans_pipeline(temp_input, output_pathtemp_output) # 读取处理结果 processed_chunk, _ librosa.load(temp_output, srsr, monoTrue) processed_chunks.append(processed_chunk) # 合并所有片段 full_audio np.concatenate(processed_chunks) sf.write(output_path, full_audio, sr)5.3 模型相关问题问题想尝试其他降噪模型ModelScope上还有其他语音处理模型# 其他可用的降噪模型 models [ damo/speech_dfsmn_ans_psm_48k_causal, # 实时降噪 damo/speech_frcrn_ans_cirm_16k, # 我们用的这个 damo/speech_mossformer_ans_cirm_16k, # 另一种架构 ] # 可以写个函数测试不同模型 def compare_models(input_path, models_list): results {} for model_name in models_list: print(f测试模型: {model_name}) pipeline_obj pipeline( Tasks.acoustic_noise_suppression, modelmodel_name ) output_path foutput_{model_name.replace(/, _)}.wav pipeline_obj(input_path, output_pathoutput_path) results[model_name] output_path return results问题如何评估降噪效果虽然主观听感很重要但也可以用客观指标import numpy as np import librosa from scipy import signal def calculate_snr(clean_path, noisy_path): 计算信噪比 clean, _ librosa.load(clean_path, sr16000) noisy, _ librosa.load(noisy_path, sr16000) # 确保长度一致 min_len min(len(clean), len(noisy)) clean clean[:min_len] noisy noisy[:min_len] # 计算噪声 noise noisy - clean # 计算功率 signal_power np.sum(clean**2) noise_power np.sum(noise**2) # 避免除零 if noise_power 0: return float(inf) snr 10 * np.log10(signal_power / noise_power) return snr # 使用示例 original_snr calculate_snr(clean_reference.wav, noisy.wav) denoised_snr calculate_snr(clean_reference.wav, denoised.wav) print(f原始SNR: {original_snr:.2f} dB) print(f降噪后SNR: {denoised_snr:.2f} dB) print(f提升: {denoised_snr - original_snr:.2f} dB)6. 实际应用场景了解了基本用法后我们来看看FRCRN在实际工作中能帮我们做什么。6.1 语音通话质量提升如果你在做语音通话或会议应用FRCRN可以显著提升语音质量class RealTimeDenoiser: 实时语音降噪处理类 def __init__(self): self.pipeline pipeline( Tasks.acoustic_noise_suppression, modeldamo/speech_frcrn_ans_cirm_16k ) self.buffer [] def process_chunk(self, audio_chunk): 处理一个音频片段 # 保存临时文件 import tempfile import soundfile as sf with tempfile.NamedTemporaryFile(suffix.wav, deleteFalse) as tmp: sf.write(tmp.name, audio_chunk, 16000) output_file tmp.name.replace(.wav, _clean.wav) # 降噪处理 self.pipeline(tmp.name, output_pathoutput_file) # 读取处理结果 cleaned_chunk, _ librosa.load(output_file, sr16000) # 清理临时文件 os.unlink(tmp.name) os.unlink(output_file) return cleaned_chunk def real_time_processing(self, input_stream, output_stream): 实时处理音频流 chunk_size 16000 * 3 # 3秒的块 while True: # 从输入流读取数据 chunk input_stream.read(chunk_size) if not chunk: break # 处理当前块 cleaned self.process_chunk(chunk) # 写入输出流 output_stream.write(cleaned.tobytes())6.2 播客和视频配音处理做播客或视频配音时背景噪音很让人头疼。用FRCRN批量处理def process_podcast_episode(input_file, output_file): 处理播客单集 print(f开始处理: {input_file}) # 1. 预处理转换为16k单声道 temp_16k temp_16k.wav os.system(fffmpeg -i {input_file} -ar 16000 -ac 1 {temp_16k} -y) # 2. 降噪处理 pipeline_obj pipeline( Tasks.acoustic_noise_suppression, modeldamo/speech_frcrn_ans_cirm_16k ) temp_clean temp_clean.wav pipeline_obj(temp_16k, output_pathtemp_clean) # 3. 后处理恢复原始采样率如果需要 original_info os.popen(fffprobe -v error -show_entries streamsample_rate -of defaultnoprint_wrappers1:nokey1 {input_file}).read() original_sr int(original_info.strip()) if original_sr ! 16000: os.system(fffmpeg -i {temp_clean} -ar {original_sr} {output_file} -y) else: os.rename(temp_clean, output_file) # 4. 清理临时文件 for temp_file in [temp_16k, temp_clean]: if os.path.exists(temp_file): os.remove(temp_file) print(f处理完成: {output_file}) return output_file6.3 语音识别前置处理如果你在用语音识别ASR先降噪能显著提升识别准确率def asr_with_denoise(audio_path, asr_model): 带降噪的语音识别 # 第一步降噪 print(正在进行降噪处理...) denoiser pipeline( Tasks.acoustic_noise_suppression, modeldamo/speech_frcrn_ans_cirm_16k ) clean_audio_path clean_for_asr.wav denoiser(audio_path, output_pathclean_audio_path) # 第二步语音识别 print(正在进行语音识别...) transcription asr_model.transcribe(clean_audio_path) # 清理临时文件 if os.path.exists(clean_audio_path): os.remove(clean_audio_path) return transcription # 使用示例 # 假设你有一个ASR模型 # result asr_with_denoise(noisy_meeting.wav, your_asr_model) # print(f识别结果: {result})6.4 音频素材库清理如果你有大量历史录音需要清理import os from tqdm import tqdm # 进度条库 from multiprocessing import Pool def process_single_file(args): 处理单个文件用于多进程 input_file, output_dir args try: # 生成输出路径 filename os.path.basename(input_file) output_file os.path.join(output_dir, fclean_{filename}) # 跳过已处理的文件 if os.path.exists(output_file): return f跳过: {filename} # 处理 pipeline_obj pipeline( Tasks.acoustic_noise_suppression, modeldamo/speech_frcrn_ans_cirm_16k ) pipeline_obj(input_file, output_pathoutput_file) return f完成: {filename} except Exception as e: return f失败: {filename} - {str(e)} def batch_process_audio_library(input_dir, output_dir, num_workers4): 批量处理音频库 # 收集所有wav文件 audio_files [] for root, dirs, files in os.walk(input_dir): for file in files: if file.lower().endswith(.wav): audio_files.append(os.path.join(root, file)) print(f找到 {len(audio_files)} 个音频文件) # 创建输出目录 os.makedirs(output_dir, exist_okTrue) # 准备参数 tasks [(f, output_dir) for f in audio_files] # 多进程处理 with Pool(num_workers) as pool: results list(tqdm( pool.imap(process_single_file, tasks), totallen(tasks), desc处理进度 )) # 打印结果统计 success sum(1 for r in results if r.startswith(完成)) skipped sum(1 for r in results if r.startswith(跳过)) failed sum(1 for r in results if r.startswith(失败)) print(f\n处理完成成功: {success}, 跳过: {skipped}, 失败: {failed}) # 输出失败详情 if failed 0: print(\n失败的文件:) for r in results: if r.startswith(失败): print(f {r})7. 总结通过这篇教程你应该已经掌握了在UbuntuCUDA环境下部署和使用FRCRN语音降噪工具的全部流程。让我们回顾一下重点环境搭建是关键正确安装NVIDIA驱动和CUDA是发挥GPU性能的基础。记得用nvidia-smi和nvcc --version验证安装是否成功。音频预处理很重要FRCRN要求输入音频必须是16k采样率的单声道wav文件。如果源文件不符合要求先用FFmpeg或librosa转换一下。GPU加速效果明显相比CPU处理GPU可以快几倍到几十倍。处理大量音频时这个速度优势会非常明显。实际应用广泛无论是提升语音通话质量、清理播客录音还是作为语音识别的前置处理FRCRN都能发挥很大作用。批量处理脚本和多进程处理能进一步提升工作效率。遇到问题有方法声音变调检查采样率内存不足尝试分段处理第一次运行慢是正常现象。掌握这些 troubleshooting 方法使用过程会更顺利。现在你可以尝试处理自己的音频文件了。从简单的单个文件开始熟悉流程后再尝试批量处理。实践中如果遇到问题回头看看第5部分的常见问题解答大多数情况都能找到解决方法。语音降噪是个很有用的技术能显著提升音频质量。FRCRN作为业界优秀的开源模型在效果和性能之间取得了很好的平衡。希望这个工具和教程能帮你解决实际的音频处理问题。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2422786.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…