声音是如何产生的
一、音频概述
RTMP中一般音频采用aac编码,采样率为44100HZ, 每帧1024采样,帧率43,23.2ms一帧
RTC中一般音频采用opus编码,采样率为48000HZ,每帧480采样,帧率100,10ms一帧
通道数(channels)
声音的通道数,常用的有单声道和立体声之分。
采样频率
也称为采样速度,定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(HZ)来表示,例如44.1Hz
采样位数(采样格式)
采样格式是为了实现度量每个采样点。通常使用16bit(2字节),也就是2的16次方,共有65536个不同的度量值,这样采样位数越高,音频度量化的就越精细,音质同样也就越高。
采样个数(样本数)
对于采样频率,采样频率是一秒采样的个数,例如48000HZ,每秒采样个数为48000,44100HZ,每秒采样个数为44100。
而对于一帧音频的采样个数,AAC固定一帧采样1024个,MP3格式则为1152。
计算一帧音频的大小
一帧音频的大小(字节) = 通道数 x 采样个数 x 采样位数。
例如该音频帧是FLTP格式的PCM数据,那么就是aac,所以一帧中包含1024个采样个数,并且是双声道的话,那么该音频帧包含的数据量是 2 x 1024 x 4 = 8192字节。 若格式改成AV_SAMPLE_FMT,那那么采样位数是64位8字节,数据量为 2 x 1024 x 8 = 16384字节。
每秒播放的音频字节大小
每秒播放的音频字节大小(字节) = 通道数 x 采样个数 x 采样位数。
公式是一样的,但是由于求的是每秒的数据量而不是一帧的数据量,所以我们需要知道它的采样频率。 例如当采样频率为48kHZ时,一秒包含48k个采样个数而不是1024个,同样是双声道,FLTP格式,那么每秒的数据量是 2 x 48000 x 4 = 384000字节。
一帧音频的播放时长
一帧播放时间(毫秒) = 每帧样本数 * 1000 / 采样率
以采样率44100HZ来计算,每秒44100个sample,而正常一帧为1024个sample,由于比是相等的,可知每帧播放时间/1024 = 1000ms/44100,得到每帧播放时间= (1024 * 1000) / 44100 = 23.2ms
(更精确的是23.21995464852608)。
或者用另一种方式去理解公式,1s显示的帧数 = 44100 / 1024 = 43.06640625帧
。所以每一帧的播放时长 = 1s / 43.06640625 = 1000ms / 43.06640625 = 23.21995464852607ms。和上面的公式一样(浮点数尾部运算存在极小误差是正常)。 帧率:44100(每秒的采样) / 1024(每帧的采样)= 43帧/s
所以转换一下公式: 一帧播放时间(毫秒) = 1000ms / (44100 / 1024) = 1000ms * 1024 / 44100 = 23.2ms(更精确的是23.21995464852607)。
关于音频时间精度的例子
例如当采样频率为44.1kHZ:一帧播放时间(毫秒) = nb_sample样本数 * 1000 / 采样率 = 1024 * 1000 / 44100 = 23.21995464852608ms
,约等于23.2ms,精确损失了0.011995464852608ms,如果累计10万帧,误差 > 1199毫秒,如果有视频一起的就会出现音视频同步的问题,如果按着23.2msm去计算pts(0 23.2 46.4 …)就会有累积误差。
二、声波
波形叠加原理
声波是一种机械波,遵循叠加原理,当两个波形相遇时,它们的振幅会相加,如果一个波形与其完全相反的波形(相位相差180度)叠加,理论上会相互抵消,这也叫做相位反转或者音频反向。可利用这个原理进行噪声消除,通过分析原始音频中的噪声部分,可以生成一个与噪声波形完全相反的波形。将这个反向波形添加到原始音频中,理论上可以抵消噪声部分。
波是一种能量传播的形式,不涉及物质的整体移动。波通过介质中的粒子振动来传播能量。
叠加原理状态:当两个或多个波在同一介质中传播时,每个波的效果是独立的,总效果是各个波效果的代数和。当两个波相遇时,它们会同时影响介质中的同一粒子,每个波都试图使粒子按照自己的方式振动,粒子的实际运动是这些独立影响的综合结果。
同相波:如果两个波的相位相同,它们的振幅会直接相加,导致更大的振幅。
反相波:如果两个波的相位相差180度,它们的振幅会相互抵消
当两个或多个波相遇时,它们会暂时相互影响,产生叠加效果,但在相遇后,每个波会继续按照自己原有的方向、速度、频率和振幅传播,就像它们从未相遇过一样。
每个波保持其独立性,不会因为与其他波的相遇而永久改变其特性,在一个嘈杂的房间里,尽管有多种声音混合在一起,但你仍然能够分辨出特定的声音(如某人的说话声)。这是因为每个声波在相互叠加后仍保持其原有特性。当两个水波圈相遇时,它们会在交叉点产生干涉图案,但通过这个区域后,每个波仍然保持其原有的形状和传播方向。
空气是声波传播的主要介质之一,声波通过空气分子的压缩和膨胀来传播。温度、湿度、密度等因素会影响波(尤其是声波)在空气中的传播速度和衰减。空气的流动(如风)也会影响波的传播方向和速度。
振幅是波从平衡位置到波峰(或波谷)的最大位移,它表示波的强度或"大小"。在波形图上,振幅是从中线(平衡位置)到波峰或波谷的垂直距离。
频率指的是每秒钟声波振动的次数,单位是赫兹(Hz),一般来说,频率越高,我们感知到的声音音调就越高,频率低的声音我们听起来音调较低,超过20,000 Hz的声波称为超声波,人耳通常听不,低于20 Hz的声波称为次声波,同样难以被人耳直接感知。
音调是我们感知声音"高低"的主观体验,在音乐中,音调直接对应音符(如C、D、E等)。响度是我们感知声音"大小"或"强弱"的主观体验,主要由声波的振幅(强度)决定,振幅越大,感知的响度通常越大,客观上用分贝(dB)来测量声压级,在音乐中体现为音量的强弱变化。
三、分子是如何振动的
声波本质上是一种能量传递的形式。它通过介质(如空气)中的压力波动来传播。空气由分子组成(主要是氮气和氧气分子)。这些分子之间存在微弱的相互作用力。声波通常由物体的振动产生(如扬声器振膜、声带振动等)。这种振动首先推动附近的空气分子。被推动的分子会与周围的分子发生碰撞。通过这些碰撞,能量从一个分子传递到另一个分子。空气具有一定的弹性。当分子被挤压时,它们会产生反作用力,试图恢复原来的位置。分子具有质量,因此也具有惯性。这意味着它们倾向于保持运动状态。声波在传播过程中创造了局部的压力差。高压区的分子会向低压区移动,造成振动。这种压力波动和分子运动的过程不断重复。结果是一种连续的、波状的能量传递。不同频率的声波会导致分子以不同的速率振动。这就是为什么我们能听到不同音调的声音。
声波是一种纵波,即振动方向与波传播方向平行,它通过空气中的压缩和膨胀区域传播。空气分子在声波影响下沿着波的传播方向前后振动。它们不会随波传播而持续移动,而是在原位置附近振动。
声波传播时,会形成交替的高压(压缩)和低压(膨胀)区域。在压缩区域,分子被挤压在一起。在膨胀区域,分子相对分散。分子通过碰撞将能量传递给相邻分子。这种能量传递导致声波在空气中传播。分子振动的幅度很小,通常在纳米级别。分子振动的频率与声波频率相同。
尽管单个分子的运动微小,但大量分子的集体运动产生了我们能感知的声音。
声波的能量最终会转化为热能。这就是为什么声波会随距离衰减。
四、音频3a
3A 音频处理技术,是声学回声消除(AEC)、背景噪声抑制(ANS)、自动增益控制(AGC)三种音频算法的合称。
在音频数据的处理过程中,在音频数据采集完成之后需要进行预处理,3A 是预处理的关键。
AEC 回声消除算法原理及详解
回声消除(AEC)是指在二线传输的两个方向上同时间、同频谱地占用线路,在线路两个方向传输的信号完全混在一起,本端发信号的回波就成为了本端信号的干扰信号,利用自适滤波器可抵消回波以达到较好的接收信号质量,即为回声消除。
回声消除的原理就是利用接收到的音频与本地采集的音频做对比,添加反向的人造回声,将远端的声音消除。
在容易产生回声的通信场合,自适应回声消除算法是一项不可缺少的技术,其主要应用领域有视频会议系统、免提电话、可视电话终端、移动通信或声控系统及会议麦克风等。
尤其在视频会议系统和免提语音通话中,回声的存在严重影响会议质量,特别是在企业远程会议中,由于传输延时加大,回声的影响更加恶劣明显。
ANS 背景噪声抑制方法和作用
背景噪声抑制(ANS)指的是将声音中的背景噪声识别并进行消除的处理。
背景噪声分平衡噪声和瞬时噪声,平稳噪声频谱稳定,瞬时噪声频谱能量方差小,利用噪声的特点,对音频数据添加反向波形处理即可消除。
目前,对于平稳的噪声已经有很多种简单方法能够成功抑制,但是生活中常见的一些瞬态噪声却依然缺乏好办法。
瞬态噪声的共同特点就是突发性极强,在时域上呈振荡衰弱的形式,持续时间在十几毫秒至上百毫秒不等;在频域上分布很宽,瞬态噪声的频谱基本上是和正常语音的频谱混叠在一起,很难进行抑制。
AGC 自动增益算法实现与影响
自动增益控制(AGC)主要用于调整音量幅值,提高语音通信系统在带噪声环境中的性能。
人们正常交谈的音量在 40-60dB 之间,低于 25dB 的声音听起来很吃力,而超过 100dB 的声音会让人感到不适,AGC 的作用就是将音量调整到人接受的范围。
音频响度及麦克风拾音控制是保证音视频沟通质量的重要技术手段,一般来说,音频标准、传输条件、人为失误等因素都可能导致音频信号之间出现声音突变或者响度不一致的情况,这时候就需要对音频信号放大或缩小以得到自然清晰的语音通信。
参考融云音频3a:音频 3A 处理实践,让你的应用更「动听」 – 融云 Blog-融云即时通讯云|实时音视频
相关文章:
声音是如何产生的
一、音频概述 RTMP中一般音频采用aac编码,采样率为44100HZ, 每帧1024采样,帧率43,23.2ms一帧 RTC中一般音频采用opus编码,采样率为48000HZ,每帧480采样,帧率100,10ms一帧 通道数(c…...
Matlab回归预测大合集(不定期更新)-188
截至2025-1-2更新 1.BP神经网络多元回归预测(多输入单输出) 2.RBF神经网络多元回归预测(多输入单输出) 3.RF随机森林多元回归预测(多输入单输出) 4.CNN卷积神经网络多元回归预测(多输入单输…...
CUDA编程【7】 线程束
文章目录 线程束和线程块线程束线程块 线程束的分化问题线程束分化(Warp Divergence)线程束分化的执行机制如何避免线程束的分化 线程束和线程块 线程束 线程束是SM中基本的执行单元当一个网格被启动(即一个核函数被启动)&#…...
nodejs:nodejs的技巧有哪些(2)
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它允许开发者构建高性能的网络应用。 1. 使用异步编程,利用 async/await 来处理异步操作,使代码更清晰、易读。 const fetchData async () > { const data await getDataFrom…...
构建数字化校园:定义与意义
随着信息技术的快速发展,"数字化校园"这一概念逐渐成为教育领域内热议的话题。数字化校园是指利用先进的信息技术手段,如互联网、大数据、云计算等,对学校的教学、科研、管理和服务等方面进行全面升级和优化的过程。它不仅改变了传…...
LabVIEW语言学习过程是什么?
学习LabVIEW语言的过程可以分为几个阶段,每个阶段的重点内容逐步加深,帮助你从入门到精通。以下是一个简洁的学习过程: 1. 基础入门阶段 理解图形化编程:LabVIEW是一种图形化编程语言,与传统的文本编程语言不同&am…...
阿里云 人工智能与机器学习
阿里云的 人工智能(AI)与机器学习(ML) 服务为企业提供了全面的AI解决方案,帮助用户在多个行业实现数据智能化,提升决策效率,推动业务创新。阿里云通过先进的技术和丰富的工具,支持用…...
NUTTX移植到STM32
STM32移植NUTTX 1. Ubuntu下搭建开发环境1.1 先决条件1.2 下载 NuttX1.3 使用Make 进行编译1.4 烧录运行 2.通过NUTTX点亮LED2.1 部署操作系统2.2 修改配置文件2.3 编译运行程序 开发板:DshanMCUF407 官方开发文档:安装 — NuttX latest 文档 参考文档&…...
.NET 9.0 WebApi 发布到 IIS 详细步骤
微软表示,.NET 9 是迄今为止性能最高的 .NET 版本,对运行时、工作负载和语言方面进行了 1,000 多项与性能相关的改进,并采用了更高效的算法来生成更好的代码。 .NET 9 是 .NET 8 的继任者,特别侧重于云原生应用和性能。 作为标准期…...
麒麟 kylin v10 server 升级openssh 9.9p1
准备升级工作 yum install gcc make perl zlib zlib-devel pam pam-devel备份原有的ssh目录,以备后用 cp -r /etc/ssh /etc/ssh.bak cp /etc/pam.d/sshd /etc/pam.d/sshd.before cp /etc/ssh/sshd_config /etc/ssh/sshd_config.before解压源码压缩包 tar -zxf o…...
ollama+FastAPI部署后端大模型调用接口
ollamaFastAPI部署后端大模型调用接口 记录一下开源大模型的后端调用接口过程 一、ollama下载及运行 1. ollama安装 ollama是一个本地部署开源大模型的软件,可以运行llama、gemma、qwen等国内外开源大模型,也可以部署自己训练的大模型 ollama国内地…...
设计模式 行为型 策略模式(Strategy Pattern)与 常见技术框架应用 解析
策略模式(Strategy Pattern)核心思想是将算法的实现从使用该算法的类中分离出来,作为独立的对象,通过接口来定义算法家族,这样就可以很容易地改变或扩展算法。通过这种方式,可以避免在客户端代码中使用大量…...
2025资源从哪里来!
方案规划告诉你资源最好的答案? 方案一、如果你不知道啥资源可以到这里面找到初步的答案? 哔哩哔哩 (゜-゜)つロ 干杯~-bilibili 在这个网站你可以找到你对应的专业-对应的路线-对应的资源-对应的百度网盘里面全是免费的资源------------------惊喜不&…...
Alist-Sync-Web 网盘自动同步,网盘备份相互备份
Alist-Sync-Web 一个基于 Web 界面的 Alist 存储同步工具,支持多任务管理、定时同步、差异处理等功能。 如果好用,请Star!非常感谢! GitHub Gitee DockerHub 功能特点 📱 美观的 Web 管理界面🔄 支持多任…...
【FlutterDart】 listView.builder例子二(14 /100)
上效果图 上代码: import package:flutter/material.dart;class ListRoles extends StatelessWidget {ListRoles({super.key});final List<String> entries <String>[, -, *, /];final List<int> colorCodes <int>[600, 500, 100, 50];o…...
《shared_ptr源码剖析》
【shared_ptr导读】上一节,我们为大家介绍了unique_ptr的底层原理和实现。相对于unique_ptr,shared_ptr也是被大家广泛使用的智能指针,shared_ptr内部的原理是怎样的?shared_ptr是多线程安全的吗? 本文将以Centos标准库…...
关于markdown实现页面跳转(调查测试:csdn(博客编写效果、发布效果)、typroa中md转pdf的使用情况)
一-方法介绍 [点击跳转到标题0](#1) <a href"#2">正文2</a>### <span id"2">标题0</span>二、跳转测试区 点击跳转到标题0 正文2 三、测试结果 场景MDspan-可标题写博客时候,右侧显示区效果可以发布博客的效果可以…...
入门级容器技术解析:Docker和K8s的区别与关系
目录 🎯学习小目标: 关于容器 传统物理机🖥️ 虚拟机💻 为什么使用容器技术呢?🤔 容器技术🥃 Docker—容器化平台 K8s(Kubernetes)—容器编排系统 Docker和K8s有什么关系和区别&#…...
《Rust权威指南》学习笔记(五)
高级特性 1.在Rust中,unsafe是一种允许绕过Rust的安全性保证的机制,用于执行一些Rust默认情况下不允许的操作。unsafe存在的原因是:unsafe 允许执行某些可能被 Rust 的安全性检查阻止的操作,从而可以进行性能优化,如手…...
数据库软考历年上午真题与答案解析(2018-2024)
本题考查计算机总线相关知识。 总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束。 根据总线连接设备范围的不同, 分为:1.片内总线:芯片内部的总线; 2.系统…...
HTML5 文件上传(File Upload)详解
HTML5 文件上传(File Upload)详解 HTML5 提供了强大的文件上传功能,允许用户通过网页选择文件并上传到服务器。以下是关于文件上传控件的详细说明。 1. 基本的文件上传控件 使用 <input> 标签的 type"file" 属性可以创建一…...
构建属于你的七牛云文件上传工具:Qiniu Uploader 详解(从 0 到 1 实现)
GitHub 仓库地址:https://github.com/hahala2333/qiniu-upload 📚 简介 在现代 Web 开发中,静态资源的上传和管理是不可避免的需求。为了简化将本地资源上传到七牛云存储的过程,我们构建了 Qiniu Uploader 工具。它具备灵活的配置…...
Spring Boot 项目中集成 Kafka-03
在 Spring Boot 项目中集成 Kafka 有多种方式,适应不同的应用场景和需求。以下将详细介绍几种常用的集成方法,包括: 使用 Spring Kafka (KafkaTemplate 和 KafkaListener)使用 Spring Cloud Stream 与 Kafka Binder使用 Spring for Apache K…...
如何在2025年创建一个网站:使用US Domain Center和WordPress的终极指南
在本指南中,我们将向你展示如何正确地使用US Domain Center和WordPress创建一个网站。无论你是要启动一个个人博客,还是一个在线商店,我们都会提供简单易懂的步骤指导。无需技术技能 — — 只需按照我们的简单步骤操作,你就能在今…...
LLM 训练中存储哪些矩阵:权重矩阵,梯度矩阵,优化器状态
LLM 训练中存储哪些矩阵 目录 LLM 训练中存储哪些矩阵深度学习中梯度和优化器是什么在 LLM 训练中通常会存储以下矩阵: 权重矩阵:这是模型的核心组成部分。例如在基于 Transformer 架构的 LLM 中,每一层的多头注意力机制和前馈神经网络都会有相应的权重矩阵。以 BERT 模型为…...
【JVM】总结篇之对象内存布局 执行引擎
文章目录 对象内存布局对象的实例化对象的内存布局对象的方问定位 执行引擎 对象内存布局 对象的实例化 new对象流程?(龙湖地产) 对象创建方法,对象的内存分配。(360安全) 1.判断对象对应的类是否加载、链…...
机器学习之正则化惩罚和K折交叉验证调整逻辑回归模型
机器学习之正则化惩罚和K折交叉验证调整逻辑回归模型 目录 机器学习之正则化惩罚和K折交叉验证调整逻辑回归模型1 过拟合和欠拟合1.1 过拟合1.2 欠拟合 2 正则化惩罚2.1 概念2.2 函数2.3 正则化种类 3 K折交叉验证3.1 概念3.2 图片理解3.3 函数导入3.4 参数理解 4 训练模型K折交…...
【图像处理】OpenCv + Python 实现 Photoshop 中的色彩平衡功能
前言 这是使用 python 和 OpenCv 实现的 Photoshop 中色彩平衡功能的代码,可以设置阴影,高光和中间调的色调参数来调整图片的色彩平衡。 参考文章二也有 python 版本的代码实现,虽然中间调的部分貌似没有实现,但是理论部分讲解还…...
基于vue框架的的校园快递管理系统x0xm0(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
系统程序文件列表 项目功能:学生,校园跑腿,快递代取,代取进度,评价信息 开题报告内容 基于Vue框架的校园快递管理系统开题报告 一、研究背景与意义 随着电子商务的蓬勃发展,校园快递业务急剧增长,成为校园生活中不可或缺的一部分。然而&a…...
【Vim Masterclass 笔记05】第 4 章:Vim 的帮助系统与同步练习(L14+L15+L16)
文章目录 Section 4:The Vim Help System(Vim 帮助系统)S04L14 Getting Help1 打开帮助系统2 退出帮助系统3 查看具体命令的帮助文档4 查看帮助文档中的主题5 帮助文档间的上翻、下翻6 关于 linewise7 查看光标所在术语名词的帮助文档8 关于退…...
智能体(Agent)如何具备自我决策能力的机理与实现方法
一、智能体自我决策能力的机理 从人工智能和控制理论的角度看,智能体能够“自我决策”的核心在于其 “感知–认知–行动” 的循环过程,以及在此过程中引入自主学习与自主优化的机制。经过优化与补充,智能体具备自我决策能力的机理可以分解为…...
Redis 数据库源码分析
Redis 数据库源码分析 我们都知道Redis是一个 <key,value> 的键值数据库,其实也就是一个 Map。如果让我来实现这样一个 Map,我肯定是用数组,当一个 key 来的时候,首先进行 hash 运算,接着对数据的 length 取余&…...
vue3 css实现文字输出带光标显示,文字输出完毕,光标消失的效果
Vue实现过程如下: <template><div ><p ref"dom_element" class"typing" :class"{over_fill: record_input_over}"></p></div> </template> <script setup> import {onMounted, ref} from…...
【Leetcode】731. 我的日程安排表 II
文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接🔗 实现一个程序来存放你的日程安排。如果要添加的时间内不会导致三重预订时,则可以存储这个新的日程安排。 当三个日程安排有一些时间上的交叉时(例如三个日程…...
浅谈棋牌游戏开发流程四:核心业务逻辑(二)——房间匹配与对局流程
一、前言:让玩家轻松坐上“牌桌” 在上一篇文章中,我们深入探讨了用户系统与登录流程,了解了如何让“陌生人”转变为游戏中的“正式玩家”。接下来,我们将迈向游戏的核心环节——房间匹配与对局流程。这是玩家实际参与游戏、互动…...
大学生HTML5期末作业 Web前端网页制作 html5+css3+js html+css网页设计 美食 美食模版2个页面
大学生HTML5期末作业 Web前端网页制作 html5css3js htmlcss网页设计 美食 美食模版2个页面 网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修…...
Java100道面试题
1.JVM内存结构 1. 方法区(Method Area) 方法区是JVM内存结构的一部分,用于存放类的相关信息,包括: 类的结构(字段、方法、常量池等)。字段和方法的描述,如名称、类型、访问修饰符…...
MySQL 日志简介
总览 MySQL Server 有以下⼏种⽇志,可以记录服务器正在发⽣的活动。 ⽇志类型⽇志信息 ⼀般查询⽇志 (General query log) 已建⽴的客⼾端连接和从客⼾端接收到的语句 错误⽇志 (Error log) mysqld在启动、运⾏或停⽌时遇到的问题 慢查询⽇志 (Slow query log) 执⾏…...
ubuntu清理磁盘
ubuntu清理磁盘脚本: #!/bin/bash#shell脚本用#作注释行,但是第一行的#!/bin/bash例外sudo apt-get clean sudo rm -rf /tmp/* sudo rm -rf /var/cache/*cd /var/log/ sudo du -h -d 1 rm -rf ./*cd ~/.cache sudo du -h -d 1 rm -rf ./*apt…...
鸿蒙APP之从开发到发布的一点心得
引言: 做鸿蒙开发大概有1年左右时间了,从最开始的看官方文档、看B站视频,到后来成功发布两款个人APP(房贷计算极简版、时简时钟 轻喷,谢谢)。简单描述一下里边遇到的坑以及一些经历吧。 学习鸿蒙开发 个…...
C++二十三种设计模式之享元模式
C二十三种设计模式之享元模式 一、组成二、特点三、目的四、缺点五、示例代码 一、组成 抽象享元类:声明操作方法。 具体享元类:使用内部数据和外部数据来实现操作方法。 享元管理者类:创建和管理具体享元对象。 二、特点 1、创建享元对象…...
基于Python的音乐播放器 毕业设计-附源码73733
摘 要 本项目基于Python开发了一款简单而功能强大的音乐播放器。通过该音乐播放器,用户可以轻松管理自己的音乐库,播放喜爱的音乐,并享受音乐带来的愉悦体验。 首先,我们使用Python语言结合相关库开发了这款音乐播放器。利用Tkin…...
基于32单片机的智能语音家居
一、主要功能介绍 以STM32F103C8T6单片机为控制核心,设计一款智能远程家电控制系统,该系统能实现如下功能: 1、可通过语音命令控制照明灯、空调、加热器、窗户及窗帘的开关; 2、可通过手机显示和控制照明灯、空调、窗户及窗帘的开…...
【C语言程序设计——入门】C语言入门与基础语法(头歌实践教学平台习题)【合集】
目录😋 ⚙️C语言环境配置:Windows配置C语言环境(超级详细) <第1关:程序改错> 任务描述 相关知识 1. 头文件的引用 2. 基本语法规则 编程要求 测试说明 通关代码 测试结果 <第2关:scanf 函数>…...
基于Springboot的知名作家交流系统
博主介绍:java高级开发,从事互联网行业多年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了多年的设计程序开发,开发过上千套设计程序,没有什么华丽的语言,只有实…...
服务器数据恢复—离线盘数超过热备盘数导致raidz阵列崩溃的数据恢复
服务器数据恢复环境&故障: 一台配有32块硬盘的服务器在运行过程中突然崩溃不可用。经过初步检测,基本上确定服务器硬件不存在物理故障。管理员重启服务器后问题依旧。需要恢复该服务器中的数据。 服务器数据恢复环境: 1、将服务器中硬盘…...
conda安装及demo:SadTalker实现图片+音频生成高质量视频
1.安装conda 下载各个版本地址:https://repo.anaconda.com/archive/ win10版本: Anaconda3-2023.03-1-Windows-x86_64 linux版本: Anaconda3-2023.03-1-Linux-x86_64 Windows安装 环境变量 conda -V2.配置conda镜像源 安装pip conda…...
内蒙古水系详细很全shp格式arcgis软件无偏移坐标下载后内容测评
标题中的“内蒙古水系详细很全shp格式arcgis软件无偏移坐标”指的是一个地理信息系统(GIS)数据集,该数据集详细记录了内蒙古地区的水系信息,并以ESRI公司的标准矢量数据格式——Shapefile(.shp)进行存储。S…...
RK3588平台开发系列讲解(系统篇)Linux Kconfig的语法
文章目录 一、什么是Kconfig二、config模块三、menuconfig四、menu 和 endmenu五、choice 和 endchoice六、source七、depends on八、default九、help十、逻辑表达式沉淀、分享、成长,让自己和他人都能有所收获!😄 一、什么是Kconfig Kconfig的语法及代码结构非常简单。本博…...
c#使用SevenZipSharp实现压缩文件和目录
封装了一个类,方便使用SevenZipSharp,支持加入进度显示事件。 双重加密压缩工具范例: using SevenZip; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.…...