数字信号处理-大实验1.3
MATLAB仿真实验目录
- 验证实验:常见离散信号产生和实现
- 验证实验:离散系统的时域分析
- 应用实验:语音信号的基音周期(频率)测定
说明:(1)本文是DSP大实验1的最后一篇,主要讲解效果更优的倒谱法的原理和代码实现,难度大于1.2,不明白欢迎格物,有问题欢迎交流。
(2)工具函数在1.2中,如果想要复现,需要自行编写。
目录
三、语音信号的基音周期(频率)测定
3.3 实验原理
倒谱法
3.4 实验代码
3.5 实验结果
3.5.2 倒谱法(初步预处理/完全预处理)
3.5.3 不同人、不同音素、不同声调
实验心得
参考文献
三、语音信号的基音周期(频率)测定
3.3 实验原理
倒谱法
Figure 5 倒谱与共振峰求解方法[2],0.08门限需要根据实际情况调整,笔者设置的是0.05
在“计算基音周期pitch”环节,实际上是通过在搜索序列里得到的索引号+Lower_N(搜索下限/偏置量),结合采样率fs得到的。
倒谱法的优势:将时域卷积的两个信号x1[n]*x2[n]->x’[1]+x2’[n](’表示和初始信号有关联但不同的信号,具体是幅频曲线取完对数-IDFT得到的实偶信号序列),可以区分出浊音(周期性明显)和清音(周期性极弱),和预处理环节去除静音部分的操作有些相似,计算出的基音周期和频率较为准确;
倒谱法的劣势:运算时间通常较长,准确度和性能对于预处理环节均较为依赖;经过预处理之后,准确度和性能可以大幅提升。
3.4 实验代码
(实)倒谱法与共振峰绘制实现:
function [Ts,Fs]=pitch_transform(s,window_t,overlap_t,fs,fl,fh);
% 倒谱法(实偶数据帧/数据帧较短时可压缩一半的运算量;支持相对更长的数据帧)function [Ts,Fs,u_Fs]=pitch_transform(s,window_t,overlap_t,fs,fl,fh,divides)% 奇数个点,便于后续搜索最大值时确立索引window_width=round(window_t*fs/1000)+mod(round(window_t*fs/1000)+1,2);overlap_width=round(overlap_t*fs/1000)+mod(round(overlap_t*fs/1000)+1,2);% divides=round(divides/(window_width-overlap_width));count5=1;for i=1:length(divides)divides(i)=max(round(divides(i)/(window_width-overlap_width)),1);if divides(i)>floor((length(s)-window_width)/(window_width-overlap_width))+1count5=i-1;break;endendif count5~=1divides=divides(1:count5);enddivides=unique(divides);Lower_N=floor(fs/fh);Higher_N=floor(fs/fl);if Higher_N>(window_width-1)/2Higher_N=floor(window_width-1)/2;endTs=zeros(1,floor((length(s)-window_width)/(window_width-overlap_width))+1);Fs=zeros(1,floor((length(s)-window_width)/(window_width-overlap_width))+1);formants=zeros(floor((length(s)-window_width)/(window_width-overlap_width))+1,fix((window_width+1)/2));% figure();for i=1:window_width-overlap_width:length(s)-window_width+1-mod(length(s)-window_width+1,window_width-overlap_width)logS=log(abs(fft(s(i:i+window_width-1).*(hamming(window_width).')))+eps);even_pitch=ifft(logS);even_pitch(floor(length(even_pitch)/2)+1+Lower_N:floor(length(even_pitch)/2)+1+Higher_N);[max_v,max_ind]=find_average_peak(even_pitch(floor(length(even_pitch)/2)+1+Lower_N:floor(length(even_pitch)/2)+1+Higher_N),fs);if max_v>=0.025% period in milisecondsTs(floor(i/(window_width-overlap_width))+1)=(Lower_N+round(max_ind))/fs*1000;% frequency in HzFs(floor(i/(window_width-overlap_width))+1)=fs/(Lower_N+round(max_ind));endtemp=Formants(even_pitch,fs);formants(floor(i/(window_width-overlap_width))+1,:)=temp(:);enddivides(end)Ts=Ts(1:divides(length(divides)));Fs=Fs(1:divides(length(divides)));formants=formants(1:length(Ts),:);divides=divides(1:length(divides)-1);Ts_marks=zeros(1,length(divides));Fs_marks=zeros(1,length(divides));for i=1:length(divides)Ts_marks(i)=Ts(divides(i));Fs_marks(i)=Fs(divides(i));endfigure();subplot(2,1,1);plot(0:(window_width-overlap_width)/fs*1000:(length(Ts)-1)*(window_width-overlap_width)/fs*1000,Ts,'b', ...divides*(window_width-overlap_width)/fs*1000,Ts_marks,'o','MarkerFaceColor','r');title('Basic Period-Pitch Method');xlabel('t(ms)');ylabel('Basic Period(ms)');subplot(2,1,2);plot(0:(window_width-overlap_width)/fs*1000:(length(Fs)-1)*(window_width-overlap_width)/fs*1000,Fs,'cyan', ...divides*(window_width-overlap_width)/fs*1000,Fs_marks,'o','MarkerFaceColor','magenta');title('Basic Frequency-Pitch Method');xlabel('t(ms)');ylabel('Basic Frequency(Hz)');aug_divides=[1 divides length(Ts)];u_Fs=zeros(1,length(divides)+1);for i=1:length(divides)+1u_Fs(i)=mean(Fs(aug_divides(i):aug_divides(i+1)));endfigure();x=0:(window_width-overlap_width)/fs*1000:(length(Ts)-1)*(window_width-overlap_width)/fs*1000;y=0:(fs/window_width):(fs/2-fs/window_width/2);[X,Y]=meshgrid(x,y);mesh(X.',Y.',formants);colorbar;xlabel('t(ms)');ylabel('f(Hz)');zlabel('i(dB)')end
主函数编写:可根据自己的需求调用以上函数(组合)。
3.5 实验结果
3.5.2 倒谱法(初步预处理/完全预处理)
Figure 13 预处理× “生活就像海洋,只有意志坚强的人才能到达彼岸”√ 倒谱法√ 短时基音周期和基因频率 |
Figure 14 预处理√ “生活就像海洋,只有意志坚强的人才能到达彼岸”√ 倒谱法√ 短时基音周期和基音频率 |
通过Figure13和Figure14的对比,可见完全的音频预处理,对于倒谱法基音频率测定影响很大,主要体现在:
- 初步预处理+倒谱法测定得到的基音频率和周期同步为0(初始化设置)的短时数据帧很多,因此完全预处理+倒谱法具有更高的鲁棒性;
- 初步预处理+倒谱法测得的单个音素四声调平均基音频率(基线)在150Hz左右,实际测量157.6318Hz;而完全预处理+倒谱法测得的平均基音频率在250Hz左右,实际测量为279.8385Hz;我在专业音高测量软件中录制a的四个声调,得出平均基因频率大概是288Hz,虽然内容不同,但也说明初步预处理会导致基音频率测量严重偏低,而完全预处理+倒谱法具有更高的准确性。
Figure 15 a中文元音音素的四个声调,平均在C3/D3交界处,按照算术平均计算等于288Hz,MATLAB 倒谱法平均基音频率为256.6982Hz |
对于第1个缺陷,主要原因是低频分量和无音区间没有去除;
对于第2个缺陷,是关键的涉及实验核心的基音周期计算问题,主要原因如下。
Figure 16 初步预处理-倒谱实偶信号搜索区间,峰与谷差异过小,不能仅仅通过左右点数进行选择
Figure 17 完全预处理-倒谱实偶信号搜索区间(按照筛选规则,有5个尖峰符合条件,算术平均求取基音周期“索引号”)
Figure 18 完全预处理-单个数据帧的共振峰曲线(横轴单位10kHz,定义域0-24kHz;纵轴单位dB,表示相对声强)
Figure 19 预处理× “生活就像海洋,只有意志坚强的人才能到达彼岸”√ 运算效率↓ 时间-共振峰曲面
Figure 20 预处理√ “生活就像海洋,只有意志坚强的人才能到达彼岸”√ 运算效率↑ 时间-共振峰曲面
共振峰可以反映我们语音的基频信号和更高频率的K次谐波之间的相对强弱关系,也说明我们说话的时候,声音一般都是由具有相同基频的多个谐波构成的。
Figure 21 倒谱法用于检测音素(字符)个数(o的四个声调)
3.5.3 不同人、不同音素、不同声调
对应实验要求(1)-(4),收集了笔者和笔者的一位同学的音频样本,进行基音频率的测算(单位:赫兹)。使用可视化展示的音素发音区间自动切割方法分离不同音素发音区间,就可以得到同一元素不同声调的平均基音频率,同时节约了数据集构建成本,不需要每个元素每种声调分开录制保存,具体笔者尝试了四种方式(见3.4数据预处理函数体代码)。
- 作者(男):
1声 2声 3声 4声
a 275.6334 270.0315 244.3738 267.6659 264.0111
o 276.9702 293.9123 278.0272 266.9471 280.0617
e 276.3741 288.8473 276.9304 275.4824 279.9025
(2)同学(女):
1声 2声 3声 4声
a 281.4283 297.0079 281.6180 269.4950 282.3802
o 268.0011 291.9784 286.1182 277.2853 280.8530
e 264.9855 294.9584 290.2603 281.8556 282.5470
同一个人对于不同的元音音素4种声调平均差异不大,推测笔者录制a的音频时平均发音不是很自然;
同一个人同一种音素的不同声调,笔者是2声基音频率最高,1声和3声接近(a无效),4一般而言最低,也和具体的音素有较大关联;同学是a:2 1/3 4,o和e:2 3 4 1。
不同人的基音频率也有一定的偏差,比如女同学一般比男同学基音频率更高,由于样本量较小,具备偶然性。
实验心得
通过这次实验,我认知到语音信号处理是一门博大精深的工程学科,不仅仅涉及信号与系统、数字信号处理等系统的分析理论,更涉及在工程应用中的各种实际问题,更重要的是,我明白了“没有一种办法是万能的,是完美的”这个道理。
比如第三个测算基音周期的子实验中,理论上提供了通过短时信号(数据帧)自相关(实际上是帧选取+相关系数)计算基音周期的方法,然而实际过程中需要考虑信号干扰、短时信号能量或幅度、语种和说话内容、语音录述人的性别年龄音高等等:比如针对信号在录制时产生的干扰,在仿真时就需要对信号进行带通滤波的处理;针对单个元音或者辅音的发声无音区间、音素与音素之间、整段文字与整段文字之间的低频小幅值信号“干扰”,可能需要引入信号幅度的去均值化、归一化,并进行信号的去小幅值处理;而针对不同的语音内容,参数也要进行手动或者自动的适应调整。
知识方面,我了解到基音周期的提取对于语音压缩、语音合成、语音识别的重要性;了解到主要的三种处理思路——波形的直接形态学估计法(并行处理、数据减少)、相关运算方法(包括短时自相关ACF、平均幅值差分AMDF法)、变换域方法(小波变换、Hilbert-Huang变换、倒谱法)。基本掌握了ACF方法、倒谱法的理论基础和实践方法。
我还明白了“抓大放小”和“反思”在任何工程和学习中的重要性,比如这次仿真实验的ACF方法采用理想带通滤波器,既受到滤波器类型的约束,又受到通带上下限选取的影响,导致在测算基音周期时,频谱能量密度分布在低频段仍有较大比重,基音周期过大;后面我通过引入大窗口长度参数,既减少了运算时间,提升了运算速度,又在一定程度上提升了计算的准确性。
再比如,通过研究如何编写自动分割音素(字符)区间的算法,可以有效减少数据集制备方面的人力消耗,提升系统性能。
参考文献
[1] 阿沉. MATLAB语音信号分析与合成(第二版)》:第8章 基音周期的估算方法
[EB/OL]. https://zhuanlan.zhihu.com/p/510455250, 2022-05-12/2025-5-11.
[2] Eudmonia. Matlab实现倒谱法 求 基音频率和共振峰[EB/OL]. Matlab实现倒谱法 求 基音频率和共振峰_倒谱怎么反应基频-CSDN博客, 2022-04-17/2025-05-13.
相关文章:
数字信号处理-大实验1.3
MATLAB仿真实验目录 验证实验:常见离散信号产生和实现验证实验:离散系统的时域分析应用实验:语音信号的基音周期(频率)测定 说明:(1)本文是DSP大实验1的最后一篇,主要讲…...
【Pandas】pandas DataFrame describe
Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.any(*[, axis, bool_only, skipna])用于判断…...
C++GO语言微服务之Dockerfile docker-compose②
目录 01 12-yaml文件书写规则01 12-yaml文件书写规则 02 13-yaml中的数据类型 03 14-docker-compose配置文件格式 04 15-docker-compose中的关键字 05 16-prots和volumes关键字的使用 06 17-volumes_from的使用 07 18-extends的使用 08 19-networks的使用 09 20-docker…...
【计算机视觉】OpenCV实战项目:Face-Mask-Detection 项目深度解析:基于深度学习的口罩检测系统
Face-Mask-Detection 项目深度解析:基于深度学习的口罩检测系统 一、项目概述项目特点 二、项目运行方式与执行步骤(一)环境准备(二)项目结构(三)执行步骤 三、重要逻辑代码解析(一&…...
鸿蒙OSUniApp 实现的语音输入与语音识别功能#三方框架 #Uniapp
UniApp 实现的语音输入与语音识别功能 最近在开发跨平台应用时,客户要求添加语音输入功能以提升用户体验。经过一番调研和实践,我成功在UniApp项目中实现了语音输入与识别功能,现将过程和方法分享出来,希望对有类似需求的开发者有…...
python:一个代理流量监控的媒体文件下载脚本
前言 一个mitmproxy代理服务应用,作用是监听系统流量,并自动下载可能的video媒体文件到本地。 如果你没有安装mitmproxy或没有做完准备工作,请参考我的这篇文章: python:mitmproxy代理服务搭建-CSDN博客 文件架构目录…...
openfeign与dubbo调用下载excel实践
一、前言 openfeign和dubbo均是rpc框架 RPC(Remote Procedure Call,远程过程调用)框架 是一种允许程序像调用本地方法一样调用远程服务器上函数的技术。它隐藏了底层网络通信的复杂性,让开发者可以专注于业务逻辑,实现…...
Android多媒体——媒体start流程分析(十三)
当多媒体的数据源准备好,并且完成调用准备结束流程后,接下来就开始是调用 start() 方法开始播放媒体了。这里我们就来分析一下媒体开始播放的整个流程。 一、媒体播放流程 对于媒体播放流程的 Java 层和 JNI 层与前面的示例基本相同,这里不再重复展示了,我们直接从 mediap…...
数据库系统概论(八)SQL单表查询语言超详细讲解(附带例题表格对比带你一步步掌握)
数据库系统概论(八)SQL单表查询语言超详细讲解(附带例题表格对比带你一步步掌握) 前言一、创建表(了解一下就好,后面会详细讲)二、数据查询的概念2.1 什么是数据查询?2.2 数据查询的…...
【IPMV】图像处理与机器视觉:Lec11 Keypoint Features and Corners
【IPMV】图像处理与机器视觉:Lec11 Keypoint Features and Corners 本系列为2025年同济大学自动化专业**图像处理与机器视觉**课程笔记 Lecturer: Rui Fan、Yanchao Dong Lec0 Course Description Lec3 Perspective Transformation Lec7 Image Filtering Lec8 I…...
C++23 中的 ranges::starts_with 与 ranges::ends_with
文章目录 功能介绍ranges::starts_withranges::ends_with 示例代码编译器支持总结 C23 标准引入了 ranges::starts_with 和 ranges::ends_with,这两个算法由提案 P1659R3 提出,旨在为任意范围提供检查前缀和后缀的功能。 功能介绍 ranges::starts_wit…...
2025 uniapp的请求封装工具类以及使用【拿来就用】
一、创建一个http请求封装的js文件,名字自定义:my_http.js /*** 基础API请求地址(常量,全大写命名规范)* type {string}* constant*/ let BASE_URL //通过环境来判断基础路径 if (process.env.NODE_ENV development…...
Axure设计之内联框架切换页面、子页面间跳转问题
在Axure中,你可以通过以下步骤实现主页面中的内联框架在点击按钮时切换页面内容,从A页面切换到B页面。(误区:子页面之间切换不要设置“框架中打开链接”然后选“父级框架”这个交互) 主框架页面(左侧导航展…...
PyTorch 中神经网络相关要点(损失函数,学习率)及优化方法总结
笔记 1 神经网络搭建和参数计算 1.1 构建神经网络模型 import torch import torch.nn as nn # 线性模型和初始化方法 # todo:1-创建类继承 nn.module类 class ModelDemo(nn.Module):# todo:2-定义__init__构造方法, 构建神经网络def __init__(self):# todo:2-1 调用父…...
适用于 iOS 的 开源Ultralytics YOLO:应用程序和 Swift 软件包,用于在您自己的 iOS 应用程序中运行 YOLO
一、软件介绍 文末提供程序和源码下载 该项目利用 Ultralytics 最先进的 YOLO11 模型将您的 iOS 设备转变为用于对象检测的强大实时推理工具。直接从 App Store 下载该应用程序,或浏览我们的指南,将 YOLO 功能集成到您自己的 Swift 应用程序中。 二、…...
why FPGA喜欢FMC子卡?
FMC 即 FPGA Mezzanine Card ( FPGA中间层板卡),由子板模块、载卡两构成。 FMC 载卡:为子板模块提供插槽,使用母座FMC连接器。载卡连接器引脚与具有可配置IO资源的芯片例如FPGA引脚通过PCB设计连接在一起。。 盘古100…...
【优选算法 | 字符串】字符串模拟题精选:思维+实现解析
算法相关知识点可以通过点击以下链接进行学习一起加油!双指针滑动窗口二分查找前缀和位运算模拟链表哈希表 在众多字符串算法题中,有一类题目看起来没有太多算法技巧,却经常让人“翻车”——那就是字符串模拟题。这类题型往往不依赖复杂的数据…...
比亚迪固态电池突破:王传福的技术哲学与产业重构|创客匠人热点评述
合肥某车间凌晨两点依然灯火通明,工程师正在调试的银白色设备,即将颠覆整个电动车行业 —— 比亚迪全固态电池产线的曝光,标志着中国新能源汽车产业正式迈入 “技术定义市场” 的新纪元。 一、技术突破的底层逻辑 比亚迪全固态电池的核心竞…...
UUG杭州站 | 团结引擎1.5.0 OpenHarmony新Feature介绍
PPT下载地址:https://u3d.sharepoint.cn/:b:/s/UnityChinaResources/EaZmiWfAAdFFmuyd6c-7_3ABhvZoaM69g4Uo2RrSzT3tZQ?e2h7RaL 在2025年4月12日的Unity User Group杭州站中,Unity中国OpenHarmony技术负责人刘伟贤带来演讲《团结引擎1.5.0 OpenHarmony新…...
OpenHarmony轻量系统--BearPi-Nano开发板网络程序测试
本文介绍RISC-V架构海思Hi3861开发板,通过Linux开发环境运行OpenHarmony轻量化系统,下载测试网络例程的过程与步骤。 OpenHarmony操作系统分类 轻量系统(mini system) 面向MCU类处理器例如Arm Cortex-M、RISC-V 32位的设备&#x…...
k8s 中使用 Service 访问时NetworkPolicy不生效问题排查
背景 针对一个服务如下NetworkPolicy, 表示只有n9e命名空间的POD才能访问 k8s-man 服务 kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata:name: k8s-mannamespace: n9elabels:app: k8s-manversion: v1 spec:podSelector:matchLabels:app: k8s-manversion: v1…...
2025 AI如何重构网络安全产品
威胁检测与防御 利用机器学习算法提升威胁检测能力 :AI能够分析大量的网络数据和行为模式,通过机器学习算法自动识别出潜在的威胁和异常行为。例如,Darktrace的Cyber AI Analyst基于真实SOC数据训练,可推进威胁调查,提…...
ARM杂谈——临界段保护恢复的中断状态可靠吗
0 前言 在MCU中,临界段保护是指在多任务或多线程环境中,确保某段代码在执行时不会被其他任务或中断打断,从而避免数据竞争或不一致的问题。临界段保护通常用于共享资源的访问,如全局变量、硬件寄存器等。 我们有一些常用的临界段…...
数据库MySQL学习——day10()
文章目录 1. 什么是子查询(Subquery)?2. 创建样例表:商品表 products3. 插入示例数据4. 子查询的三种常用位置4.1 子查询在 WHERE 子句中(最常见)4.2 子查询在 FROM 子句中(可以当成临时表&…...
YashanDB V23.4 LTS 正式发布|两地三中心、库级闪回重磅特性上线,生产级可用性再升级
近日,YashanDB V23.4 LTS(Long-Term Support Release)版本正式发布,新版本深度契合关键行业数字化转型对数据库“业务永续、风险可控”的核心诉求,打造两地三中心秒级容灾、库级闪回秒级恢复、MySQL全面兼容等重磅特性…...
AI规则引擎:解锁SQL数据分析新姿势
一、AI 规则引擎与 SQL 的奇妙邂逅 在当今数字化时代,数据如同石油,是企业发展和创新的核心驱动力。而如何从海量的数据中提取有价值的信息,成为了企业面临的关键挑战。人工智能规则引擎和 SQL,作为数据分析领域的两大重要工具&a…...
Kotlin Multiplatform与Flutter、Compose共存:构建高效跨平台应用的完整指南
简介 在移动开发领域,跨平台技术正在重塑开发范式。Kotlin Multiplatform (KMP) 作为 JetBrains 推出的多平台开发框架,结合了 Kotlin 的简洁性与原生性能优势,使开发者能够高效共享业务逻辑。而 Flutter 凭借其高性能渲染引擎(Skia)和丰富的组件库,成为混合开发的首选方…...
FunASR:语音识别与合成一体化,企业级开发实战详解
简介 FunASR是由阿里巴巴达摩院开源的高性能语音识别工具包,它不仅提供语音识别(ASR)功能,还集成了语音端点检测(VAD)、标点恢复、说话人分离等工业级模块,形成了完整的语音处理解决方案。 FunASR支持离线和实时两种模式,能够高效处理多语言音频,并提供高精度的识别结果。…...
【Spark分析HBase数据】Spark读取并分析HBase数据
Spark读取并分析HBase数据 一、摘要二、实现过程三、小结 一、摘要 Apache Spark 是一个快速、通用的大数据处理引擎,提供了丰富的 API 用于数据处理和分析。HBase 是一个分布式、可扩展的 NoSQL 数据库,适合存储海量结构化和半结构化数据。Spark 与 HB…...
探索直播美颜SDK的核心算法:图像增强与AI美颜技术详解
一款优秀的直播美颜SDK不仅能让主播拥有完美的在线形象,还能帮助平台吸引更多用户。然而,这背后的关键在于其核心算法——从基本的图像增强到前沿的AI美颜技术,每一步都至关重要。今天,我们就来深入探讨这些技术背后的秘密。 一、…...
全新linux网络配置工具nmcli:
1.Linux全新网络管理工具nmcli的使用 ,网络管理命令行工具nmcli 在nmcli中有2个命令最为常用: (1)nmcli connection 表示连接,可理解为配置文件,相当于ifcfg-ethX。可以简写为nmcli c (2)nmcl…...
LeetCode100.5 盛最多水的容器
对于这题,首先明确的是:盛水的体积取决于两垂线间的距离与两垂线中最短的长度。 那么使用双指针,在每次移动时,只移动其中最短的那个,因为若移动最长的那个,体积不会变大。 class Solution { public:int …...
AI开发者的算力革命:GpuGeek平台全景实战指南(大模型训练/推理/微调全解析)
目录 背景一、AI工业化时代的算力困局与破局之道1.1 中小企业AI落地的三大障碍1.2 GpuGeek的破局创新1.3 核心价值 二、GpuGeek技术全景剖析2.1 核心架构设计 三、核心优势详解3.1 优势1:工业级显卡舰队3.2 优势2:开箱即用生态3.2.1 预置镜像库…...
Java元注解
Java 元注解(Meta-Annotations) 元注解是指用于注解其他注解的注解,Java 提供了5个内置的元注解: 1. Target 指定注解可以应用的目标元素类型。 Target(ElementType.TYPE) // 只能用于类、接口或枚举 public interface MyAnno…...
FPGA:Xilinx Kintex 7实现DDR3 SDRAM读写
在Xilinx Kintex 7系列FPGA上实现对DDR3 SDRAM的读写,主要依赖Xilinx提供的Memory Interface Generator (MIG) IP核,结合Vivado设计流程。以下是详细步骤和关键点: 1. 准备工作 硬件需求: Kintex-7 FPGA(如XC7K325T&…...
深度剖析 GpuGeek 实例:GpuGeek/Qwen3-32B 模型 API 调用实践与性能测试洞察
深度剖析 GpuGeek 实例:GpuGeek/Qwen3-32B 模型 API 调用实践与性能测试洞察 前言 GpuGeek专注于人工智能与高性能计算领域的云计算平台,致力于为开发者、科研机构及企业提供灵活、高效、低成本的GPU算力资源。平台通过整合全球分布式数据中心资源&#…...
散列表(1)
散列表概念 键通过散列函数后转换为数组的下标,在对应的下标位置上存储相应的信息 键------>散列函数-------->数组下标------->存储信息 散列函数 散列函数就是一个函数,能够将给定的key转换为特定散列值。hashValuehash(key&…...
E. 23 Kingdom【Codeforces Round 1024 (Div. 2)】
E. 23 Kingdom 思路: 这道题的核心在于如何构造一个数组b,使得每个数的最远两个出现位置之差总和最大。通过分析,我们发现要最大化总美丽值,应尽可能让每个数的首次出现尽可能靠左、末次出现尽可能靠右。这样每个数的距离贡献j-i…...
TTS-Web-Vue系列:Vue3实现侧边栏与顶部导航的双向联动
🔄 本文是TTS-Web-Vue系列的最新文章,重点介绍如何在Vue3项目中实现侧边栏与顶部导航栏的双向联动功能。通过Vue3的响应式系统和组件通信机制,我们构建了一套高效、流畅的导航联动方案,让用户在不同入口都能获得一致的导航体验。 …...
【C++】模板(初阶)
一、模板与泛型编程 我们先来思考一下:如何实现一个通用的交换函数? void Swap(int& left, int& right) {int temp left;left right;right temp; }void Swap(double& left, double& right) {double temp left;left right;right te…...
大模型微调实战:基于GpuGeek平台的低成本高效训练方案
文章目录 引言一、GpuGeek平台使用入门1. 注册与账号设置2. 控制台功能概览3. 快速创建GPU实例3. 预置镜像与自定义环境 二、GpuGeek平台核心优势解析1. 显卡资源充足:多卡并行加速训练2. 镜像超多:开箱即用的开发环境3. 计费灵活:按需付费降…...
黑马k8s(六)
1.Deployment(Pod控制器) Selector runnginx 标签选择:会找pod打的标签 执行删除之后,pod也会删除,Terminating正在删除 如果想要访问其中的一个pod借助:IP地址端口号访问 假设在某一个瞬间,…...
WEB安全--Java安全--CC1利用链
一、梳理基本逻辑 WEB后端JVM通过readObject()的反序列化方式接收用户输入的数据 用户编写恶意代码并将其序列化为原始数据流 WEB后端JVM接收到序列化后恶意的原始数据并进行反序列化 当调用: ObjectInputStream.readObject() JVM 内部逻辑: → 反…...
16S18S_OTU分析(3)
OTU的定义 OTU:操作分类单元是在系统发生学研究或群体遗传学研究中,为了便于进行分析,人为给某一个分类单元(如品系、种、属、分组等)设置的同一标志。目的:OTU用于将相似的序列归为一类,以便于…...
嵌入式开发学习日志(数据结构--单链表)Day20
一、gdb调试 (一)一般调试步骤与命令 1、gcc -g (调试版本,内含调试信息与源码;eg:gcc -g main.c linklist.c) 2、gdb a.out(调试可执行文件,eg:gdb …...
nginx报错-[emerg] getpwnam(“nginx“) failed in /etc/nginx/nginx.conf:2
报错 - nginx: [emerg] getpwnam(“nginx”) failed in /etc/nginx/nginx.conf:2 问题描述: nginx: [emerg] getpwnam(“nginx”) failed in /etc/nginx/nginx.conf:2 问题原因: 是因为配制文件中使用的启动账户在系统中并没有找到 解决方法&#x…...
Linux系统编程——fork函数的使用方法
在 Linux 系统编程 中,fork() 函数是创建新进程的关键系统调用。fork() 在当前进程(父进程)中创建一个几乎完全相同的子进程。子进程和父进程从调用 fork() 的位置继续执行,但它们是两个独立的进程,每个进程都有自己的…...
Linux进程信号处理(26)
文章目录 前言一、信号的处理时机处理情况“合适”的时机 二、用户态与内核态概念重谈进程地址空间信号的处理过程 三、信号的捕捉内核如何实现信号的捕捉?sigaction 四、信号部分小结五、可重入函数六、volatile七、SIGCHLD 信号总结 前言 这篇就是我们关于信号的最…...
黑马Java跟学.最新AI+若依框架项目开发(一)
黑马Java跟学.最新AI若依框架项目开发.一 前瞻为什么学习若依?AI局限性若依是什么?创新项目开发新方案课程安排前置知识 一、若依搭建若依版本官方非官方 RuoYi-Vue运行后端项目初始化项目Git下载Maven构建 MySQL相关导入sql配置信息 Redis相关启动配置信息 项目运…...
【自学30天掌握AI开发】第1天 - 人工智能与大语言模型基础
自学30天掌握AI开发 - 第1天 📆 日期和主题 日期:第1天 主题:人工智能与大语言模型基础 🎯 学习目标 了解人工智能的发展历史和基本概念掌握大语言模型的基本原理和工作机制区分不同类型的AI模型及其特点理解AI在当前社会中的…...