【辦公自動化】如何使用Python腳本自動化處理音頻?

在日常辦公和內容創作中,音頻處理是一項常見需求。無論是處理會議錄音、制作播客、編輯音樂背景,還是進行語音識別,Python都能幫助我們高效地完成這些任務。本文將介紹如何使用Python實現音頻處理自動化,包括格式轉換、音頻拼接、音量調整和語音識別等功能。

音頻處理庫簡介

在Python中,有多個強大的庫可用于音頻處理:

  1. pydub:簡單易用的高級音頻處理庫,適合大多數日常音頻處理任務
  2. librosa:專為音樂分析設計的庫,提供豐富的音頻特征提取功能
  3. SpeechRecognition:用于語音識別的庫,支持多種語音識別引擎
  4. PyAudio:用于錄制和播放音頻的庫
  5. ffmpeg-python:ffmpeg命令行工具的Python封裝,用于復雜的音視頻處理

音頻格式轉換

使用pydub進行格式轉換

from pydub import AudioSegment
import osdef convert_audio_format(input_path, output_format):"""將音頻文件轉換為指定格式Args:input_path: 輸入音頻文件路徑output_format: 目標格式(如'mp3', 'wav', 'ogg', 'flac'等)Returns:輸出文件路徑"""try:# 獲取文件名和擴展名file_name, file_extension = os.path.splitext(input_path)file_extension = file_extension.lower().replace('.', '')# 構建輸出路徑output_path = f"{file_name}.{output_format}"# 加載音頻文件audio = AudioSegment.from_file(input_path, format=file_extension)# 導出為目標格式audio.export(output_path, format=output_format)print(f"已將 {input_path} 轉換為 {output_path}")return output_pathexcept Exception as e:print(f"轉換音頻格式時出錯: {e}")return None# 使用示例
# convert_audio_format("meeting.mp3", "wav")

批量轉換音頻格式

import os
from pydub import AudioSegmentdef batch_convert_audio(input_folder, output_folder, target_format):"""批量轉換文件夾中的音頻文件格式Args:input_folder: 輸入文件夾路徑output_folder: 輸出文件夾路徑target_format: 目標格式(如'mp3', 'wav', 'ogg', 'flac'等)"""# 確保輸出文件夾存在if not os.path.exists(output_folder):os.makedirs(output_folder)# 支持的音頻格式supported_formats = ['.mp3', '.wav', '.ogg', '.flac', '.aac', '.m4a', '.wma']# 遍歷輸入文件夾中的所有文件converted_count = 0for filename in os.listdir(input_folder):input_path = os.path.join(input_folder, filename)# 檢查是否為文件且擴展名在支持列表中if os.path.isfile(input_path):file_ext = os.path.splitext(filename)[1].lower()if file_ext in supported_formats:# 構建輸出路徑output_filename = os.path.splitext(filename)[0] + '.' + target_formatoutput_path = os.path.join(output_folder, output_filename)try:# 加載音頻文件audio = AudioSegment.from_file(input_path, format=file_ext[1:])# 導出為目標格式audio.export(output_path, format=target_format)print(f"已轉換: {filename} -> {output_filename}")converted_count += 1except Exception as e:print(f"轉換 {filename} 時出錯: {e}")print(f"批量轉換完成,共轉換 {converted_count} 個文件")# 使用示例
# batch_convert_audio("audio_files", "converted_files", "mp3")

音頻拼接與剪輯

拼接多個音頻文件

from pydub import AudioSegmentdef concatenate_audio_files(audio_paths, output_path):"""將多個音頻文件拼接成一個Args:audio_paths: 音頻文件路徑列表output_path: 輸出文件路徑"""try:# 檢查輸入列表是否為空if not audio_paths:print("輸入文件列表為空")return False# 加載第一個音頻文件combined = AudioSegment.from_file(audio_paths[0])# 依次拼接其他文件for audio_path in audio_paths[1:]:next_segment = AudioSegment.from_file(audio_path)combined += next_segment# 導出拼接后的文件combined.export(output_path, format=output_path.split('.')[-1])print(f"已將 {len(audio_paths)} 個音頻文件拼接為 {output_path}")return Trueexcept Exception as e:print(f"拼接音頻文件時出錯: {e}")return False# 使用示例
# concatenate_audio_files(["intro.mp3", "main_content.mp3", "outro.mp3"], "full_episode.mp3")

剪切音頻片段

from pydub import AudioSegmentdef trim_audio(input_path, output_path, start_ms, end_ms):"""剪切音頻文件的指定片段Args:input_path: 輸入音頻文件路徑output_path: 輸出文件路徑start_ms: 開始時間(毫秒)end_ms: 結束時間(毫秒)"""try:# 加載音頻文件audio = AudioSegment.from_file(input_path)# 檢查時間范圍是否有效if start_ms < 0:start_ms = 0if end_ms > len(audio):end_ms = len(audio)if start_ms >= end_ms:print("無效的時間范圍")return False# 剪切指定片段trimmed_audio = audio[start_ms:end_ms]# 導出剪切后的文件trimmed_audio.export(output_path, format=output_path.split('.')[-1])print(f"已剪切 {input_path}{start_ms}ms 到 {end_ms}ms 的片段")return Trueexcept Exception as e:print(f"剪切音頻時出錯: {e}")return False# 使用示例
# trim_audio("long_recording.mp3", "important_segment.mp3", 60000, 120000)  # 剪切1分鐘到2分鐘的片段

添加淡入淡出效果

from pydub import AudioSegmentdef add_fade_effects(input_path, output_path, fade_in_ms=1000, fade_out_ms=1000):"""為音頻添加淡入淡出效果Args:input_path: 輸入音頻文件路徑output_path: 輸出文件路徑fade_in_ms: 淡入時長(毫秒)fade_out_ms: 淡出時長(毫秒)"""try:# 加載音頻文件audio = AudioSegment.from_file(input_path)# 應用淡入淡出效果audio = audio.fade_in(fade_in_ms).fade_out(fade_out_ms)# 導出處理后的文件audio.export(output_path, format=output_path.split('.')[-1])print(f"已為 {input_path} 添加淡入淡出效果")return Trueexcept Exception as e:print(f"添加淡入淡出效果時出錯: {e}")return False# 使用示例
# add_fade_effects("music.mp3", "music_with_fade.mp3", 2000, 3000)  # 2秒淡入,3秒淡出

音量調整

調整音頻音量

from pydub import AudioSegmentdef adjust_volume(input_path, output_path, volume_change_db):"""調整音頻文件的音量Args:input_path: 輸入音頻文件路徑output_path: 輸出文件路徑volume_change_db: 音量變化(分貝),正值增加音量,負值降低音量"""try:# 加載音頻文件audio = AudioSegment.from_file(input_path)# 調整音量adjusted_audio = audio + volume_change_db  # 簡單的加減操作即可調整分貝# 導出處理后的文件adjusted_audio.export(output_path, format=output_path.split('.')[-1])print(f"已調整 {input_path} 的音量 {volume_change_db}dB")return Trueexcept Exception as e:print(f"調整音量時出錯: {e}")return False# 使用示例
# adjust_volume("quiet_audio.mp3", "louder_audio.mp3", 6)  # 增加6dB音量
# adjust_volume("loud_audio.mp3", "quieter_audio.mp3", -6)  # 降低6dB音量

音量標準化

from pydub import AudioSegment
import numpy as npdef normalize_audio(input_path, output_path, target_dBFS=-20):"""將音頻標準化到指定的分貝全刻度值Args:input_path: 輸入音頻文件路徑output_path: 輸出文件路徑target_dBFS: 目標分貝全刻度值,通常為負值,如-20dBFS"""try:# 加載音頻文件audio = AudioSegment.from_file(input_path)# 計算當前音頻與目標音量的差值change_in_dBFS = target_dBFS - audio.dBFS# 應用音量變化normalized_audio = audio.apply_gain(change_in_dBFS)# 導出處理后的文件normalized_audio.export(output_path, format=output_path.split('.')[-1])print(f"已將 {input_path} 標準化到 {target_dBFS}dBFS")return Trueexcept Exception as e:print(f"標準化音頻時出錯: {e}")return False# 使用示例
# normalize_audio("varying_volume.mp3", "normalized_audio.mp3")

語音識別

使用SpeechRecognition庫進行語音識別

import speech_recognition as srdef speech_to_text(audio_path, language='zh-CN'):"""將語音文件轉換為文本Args:audio_path: 音頻文件路徑(最好是WAV格式)language: 語言代碼,默認為中文Returns:識別出的文本,失敗則返回None"""try:# 初始化識別器recognizer = sr.Recognizer()# 加載音頻文件with sr.AudioFile(audio_path) as source:# 讀取音頻數據audio_data = recognizer.record(source)# 使用Google語音識別APItext = recognizer.recognize_google(audio_data, language=language)print(f"識別結果: {text}")return textexcept sr.UnknownValueError:print("無法識別語音")return Noneexcept sr.RequestError as e:print(f"無法請求Google語音識別服務; {e}")return Noneexcept Exception as e:print(f"語音識別時出錯: {e}")return None# 使用示例
# text = speech_to_text("recording.wav", "zh-CN")
# if text:
#     with open("transcript.txt", "w", encoding="utf-8") as f:
#         f.write(text)

批量處理音頻文件進行語音識別

import os
import speech_recognition as srdef batch_speech_to_text(input_folder, output_folder, language='zh-CN'):"""批量處理文件夾中的音頻文件,將語音轉換為文本Args:input_folder: 輸入文件夾路徑output_folder: 輸出文件夾路徑(存放文本文件)language: 語言代碼,默認為中文"""# 確保輸出文件夾存在if not os.path.exists(output_folder):os.makedirs(output_folder)# 支持的音頻格式supported_formats = ['.wav']  # SpeechRecognition主要支持WAV格式# 初始化識別器recognizer = sr.Recognizer()# 遍歷輸入文件夾中的所有文件processed_count = 0for filename in os.listdir(input_folder):input_path = os.path.join(input_folder, filename)# 檢查是否為文件且擴展名在支持列表中if os.path.isfile(input_path):file_ext = os.path.splitext(filename)[1].lower()if file_ext in supported_formats:# 構建輸出路徑output_filename = os.path.splitext(filename)[0] + '.txt'output_path = os.path.join(output_folder, output_filename)try:# 加載音頻文件with sr.AudioFile(input_path) as source:audio_data = recognizer.record(source)# 使用Google語音識別APItext = recognizer.recognize_google(audio_data, language=language)# 將識別結果寫入文本文件with open(output_path, 'w', encoding='utf-8') as f:f.write(text)print(f"已處理: {filename} -> {output_filename}")processed_count += 1except Exception as e:print(f"處理 {filename} 時出錯: {e}")print(f"批量處理完成,共處理 {processed_count} 個文件")# 使用示例
# batch_speech_to_text("recordings", "transcripts", "zh-CN")

實際應用場景

場景一:會議錄音處理

from pydub import AudioSegment
import speech_recognition as sr
import osdef process_meeting_recording(audio_path, output_folder):"""處理會議錄音:轉換格式、分割長錄音、生成文字記錄Args:audio_path: 會議錄音文件路徑output_folder: 輸出文件夾路徑"""# 確保輸出文件夾存在if not os.path.exists(output_folder):os.makedirs(output_folder)# 獲取文件名(不含擴展名)base_name = os.path.splitext(os.path.basename(audio_path))[0]try:# 1. 加載音頻文件print("正在加載音頻文件...")meeting_audio = AudioSegment.from_file(audio_path)# 2. 標準化音量print("正在標準化音量...")normalized_audio = meeting_audio.apply_gain((-20) - meeting_audio.dBFS)# 3. 轉換為WAV格式(便于語音識別)wav_path = os.path.join(output_folder, f"{base_name}.wav")print(f"正在轉換為WAV格式: {wav_path}")normalized_audio.export(wav_path, format="wav")# 4. 將長錄音分割成10分鐘的片段(便于處理)segment_length_ms = 10 * 60 * 1000  # 10分鐘segments_folder = os.path.join(output_folder, "segments")if not os.path.exists(segments_folder):os.makedirs(segments_folder)print("正在分割錄音...")for i, start_ms in enumerate(range(0, len(normalized_audio), segment_length_ms)):# 計算結束時間end_ms = min(start_ms + segment_length_ms, len(normalized_audio))# 提取片段segment = normalized_audio[start_ms:end_ms]# 保存片段segment_path = os.path.join(segments_folder, f"{base_name}_segment_{i+1}.wav")segment.export(segment_path, format="wav")print(f"已保存片段 {i+1}: {segment_path}")# 5. 對每個片段進行語音識別transcripts_folder = os.path.join(output_folder, "transcripts")if not os.path.exists(transcripts_folder):os.makedirs(transcripts_folder)print("正在進行語音識別...")recognizer = sr.Recognizer()full_transcript = ""for i, segment_file in enumerate(sorted(os.listdir(segments_folder))):if segment_file.endswith(".wav"):segment_path = os.path.join(segments_folder, segment_file)try:# 加載音頻片段with sr.AudioFile(segment_path) as source:audio_data = recognizer.record(source)# 識別語音text = recognizer.recognize_google(audio_data, language="zh-CN")# 添加到完整記錄segment_header = f"\n--- 片段 {i+1} ---\n"full_transcript += segment_header + text + "\n"print(f"已完成片段 {i+1} 的語音識別")except Exception as e:print(f"處理片段 {segment_file} 時出錯: {e}")full_transcript += f"\n--- 片段 {i+1} (識別失敗) ---\n"# 6. 保存完整文字記錄transcript_path = os.path.join(output_folder, f"{base_name}_transcript.txt")with open(transcript_path, "w", encoding="utf-8") as f:f.write(full_transcript)print(f"會議錄音處理完成,文字記錄已保存至: {transcript_path}")return Trueexcept Exception as e:print(f"處理會議錄音時出錯: {e}")return False# 使用示例
# process_meeting_recording("weekly_meeting.mp3", "meeting_output")

場景二:播客制作助手

from pydub import AudioSegment
from pydub.effects import normalize
import osdef podcast_production_assistant(intro_path, main_content_path, outro_path, background_music_path, output_path):"""播客制作助手:合并片段、添加背景音樂、標準化音量Args:intro_path: 片頭音頻路徑main_content_path: 主要內容音頻路徑outro_path: 片尾音頻路徑background_music_path: 背景音樂路徑output_path: 輸出文件路徑"""try:print("正在加載音頻文件...")# 加載所有音頻片段intro = AudioSegment.from_file(intro_path)main_content = AudioSegment.from_file(main_content_path)outro = AudioSegment.from_file(outro_path)background_music = AudioSegment.from_file(background_music_path)# 計算總時長total_length_ms = len(intro) + len(main_content) + len(outro)# 如果背景音樂不夠長,則循環播放if len(background_music) < total_length_ms:repeats = int(total_length_ms / len(background_music)) + 1background_music = background_music * repeats# 截取所需長度的背景音樂background_music = background_music[:total_length_ms]# 降低背景音樂音量(-20dB)background_music = background_music - 20print("正在處理音頻...")# 為片頭添加淡入效果intro = intro.fade_in(2000)# 為片尾添加淡出效果outro = outro.fade_out(3000)# 合并所有片段podcast = intro + main_content + outro# 混合背景音樂podcast = podcast.overlay(background_music)# 標準化音量podcast = normalize(podcast)# 導出最終播客print(f"正在導出播客: {output_path}")podcast.export(output_path, format=output_path.split('.')[-1])print("播客制作完成!")return Trueexcept Exception as e:print(f"制作播客時出錯: {e}")return False# 使用示例
# podcast_production_assistant(
#     "podcast_intro.mp3", 
#     "podcast_content.mp3", 
#     "podcast_outro.mp3", 
#     "background_music.mp3", 
#     "final_podcast.mp3"
# )

場景三:音頻批量處理工具

import os
import argparse
from pydub import AudioSegmentdef batch_audio_processor():"""命令行音頻批量處理工具"""# 創建命令行參數解析器parser = argparse.ArgumentParser(description='音頻批量處理工具')parser.add_argument('--input', '-i', required=True, help='輸入文件夾路徑')parser.add_argument('--output', '-o', required=True, help='輸出文件夾路徑')parser.add_argument('--format', '-f', default='mp3', help='目標格式 (mp3, wav, ogg, etc.)')parser.add_argument('--normalize', '-n', action='store_true', help='是否標準化音量')parser.add_argument('--volume', '-v', type=float, default=0, help='音量調整(dB)')parser.add_argument('--fade-in', type=int, default=0, help='淡入時長(毫秒)')parser.add_argument('--fade-out', type=int, default=0, help='淡出時長(毫秒)')# 解析命令行參數args = parser.parse_args()# 確保輸出文件夾存在if not os.path.exists(args.output):os.makedirs(args.output)# 支持的音頻格式supported_formats = ['.mp3', '.wav', '.ogg', '.flac', '.aac', '.m4a', '.wma']# 遍歷輸入文件夾中的所有文件processed_count = 0for filename in os.listdir(args.input):input_path = os.path.join(args.input, filename)# 檢查是否為文件且擴展名在支持列表中if os.path.isfile(input_path):file_ext = os.path.splitext(filename)[1].lower()if file_ext in supported_formats:# 構建輸出路徑output_filename = os.path.splitext(filename)[0] + '.' + args.formatoutput_path = os.path.join(args.output, output_filename)try:print(f"處理: {filename}")# 加載音頻文件audio = AudioSegment.from_file(input_path)# 應用處理if args.normalize:# 標準化音量到-20dBFSchange_in_dBFS = -20 - audio.dBFSaudio = audio.apply_gain(change_in_dBFS)print("  - 已標準化音量")if args.volume != 0:# 調整音量audio = audio + args.volumeprint(f"  - 已調整音量: {args.volume}dB")if args.fade_in > 0:# 添加淡入效果audio = audio.fade_in(args.fade_in)print(f"  - 已添加淡入效果: {args.fade_in}ms")if args.fade_out > 0:# 添加淡出效果audio = audio.fade_out(args.fade_out)print(f"  - 已添加淡出效果: {args.fade_out}ms")# 導出處理后的文件audio.export(output_path, format=args.format)print(f"  - 已保存為: {output_filename}")processed_count += 1except Exception as e:print(f"處理 {filename} 時出錯: {e}")print(f"批量處理完成,共處理 {processed_count} 個文件")# 如果作為主程序運行
if __name__ == "__main__":batch_audio_processor()

小結

通過本文介紹的Python音頻處理自動化技術,我們可以輕松實現音頻格式轉換、拼接剪輯、音量調整和語音識別等功能。這些技術可以廣泛應用于會議記錄、播客制作、音頻編輯等場景,大大提高工作效率。

要使用本文中的代碼,需要安裝以下Python庫:

pip install pydub librosa SpeechRecognition PyAudio ffmpeg-python

注意:某些功能(如格式轉換)可能需要安裝額外的系統依賴,如ffmpeg。在Windows上,可以下載ffmpeg并將其添加到系統PATH;在Linux上,可以使用包管理器安裝;在macOS上,可以使用Homebrew安裝。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/96515.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/96515.shtml
英文地址,請注明出處:http://en.pswp.cn/web/96515.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

OpenHarmony AVSession深度解析(二):從本地會話到分布式跨設備協同的完整生命周期管理

1. 系統概述 AVSession是OpenHarmony多媒體框架中的核心組件,負責管理音視頻會話的生命周期、狀態同步和跨設備協同。它提供了統一的接口供應用創建會話、設置元數據、控制播放狀態,并支持分布式場景下的會話遷移。 2. 架構設計 2.1 核心類結構 #mermaid-svg-QwwujBwB3Wo6…

架構思維:在復雜系統中尋找秩序的底層邏輯

在商業世界中&#xff0c;架構師常被視為神秘的存在。懂架構不一定是大師&#xff0c;但&#xff0c;大師一定善于架構&#xff0c;善于撥開迷霧&#xff0c;看透全局。他們穿梭于代碼與流程之間&#xff0c;用看不見的線條編織著數字世界的經緯。 架構天然的使命就是面對復雜…

國產凝思debian系Linux離線安裝rabbitmq教程步驟

系統環境 由于國內訪問debian的apt源太慢了&#xff0c;花了很多很多時間后&#xff0c;反而超時報錯。所以采用離線安裝方式。 uname -a Linux bogon 4.19.0-11-linx-security-amd64 #1 SMP Linx 4.19.146-1linx10 (2023-05-30) x86_64 GNU/Linux下載安裝包 在有網絡的電腦…

開發避坑指南(48):Java Stream 判斷List元素的屬性是否包含指定的值

需求 Java Stream 判斷List元素的屬性是否包含指定的值該怎么實現&#xff1f; 代碼實現 直接上代碼 public class OrderInfo {private BigDecimal fee;private String orderStatus; }public class ListTest2 {public static void main(String[] args) {OrderInfo orderInfo n…

Arbess V2.0.7版本發布,支持Docker/主機藍綠部署任務,支持Gradle構建、Agent運行策略

Arbess 是一款國產開源免費的 CI/CD 工具&#xff0c;產品開源免費&#xff0c;簡潔易用。本周Arbess V2.0.7版本發布&#xff0c;新增Docker/主機藍綠部署策略&#xff0c;Gradle構建任務&#xff0c;新增Agent執行策略。 1、版本更新日志 新增 ? 支持Docker藍綠部署、主機…

萬物皆可PID:深入理解控制算法在OpenBMC風扇調速中的應用

引言&#xff1a;智能散熱&#xff0c;不僅僅是“開”和“關” 想象一下服務器中的風扇管理。最簡單的策略是“bang-bang”控制&#xff08;雙位控制&#xff09;&#xff1a;溫度超過閾值&#xff0c;風扇全速運轉&#xff1b;溫度低于閾值&#xff0c;風扇低速或停止。這種策…

CH347應用 USB轉I2C功能之:開源項目i2c-tools工具的使用(2)

目錄前言開源地址使用說明i2cdetecti2cdumpi2cset前言 上一篇博客中介紹了CH347配合i2c-tools在Linux下的使用&#xff0c;但我們能不能在Windows中也是用i2c-tools進行I2C設備的調試呢。這里我將i2cdetect、i2cdump、i2cset三個常用的工具移植至Windows平臺&#xff0c;并進行…

代碼隨想錄算法訓練營第50天 | 圖論理論基礎、深搜理論基礎、98. 所有可達路徑、廣搜理論基礎

圖論理論基礎 題目鏈接/文章講解&#xff1a;https://www.programmercarl.com/kamacoder/%E5%9B%BE%E8%AE%BA%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 了解圖的基本概念&#xff0c;連通性&#xff0c;圖的構造&#xff0c;圖的遍歷方式 深搜理論基礎 題目鏈接/文章講解&…

華為HCIE-云計算培訓課程有哪些?

華為HCIE云計算認證是華為公司推出的高級別認證&#xff0c;對于想要在云計算領域發展&#xff0c;提高專業技能和競爭力的人來說具備極高的價值。接下里就來聊聊華為HCIE云計算的培訓課程都有哪些&#xff1f;如何高效備考呢&#xff1f;一&#xff0c;HCIE云計算培訓課程1、理…

DCS控制回路優化:基于WebSocket的實時參數遠程調校方法論

說起來&#xff0c;我前段時間剛啃完一個化工廠DCS控制回路優化的硬骨頭&#xff0c;用WebSocket搞成了實時參數遠程調校&#xff0c;現在回想起來&#xff0c;滿是能跟大家嘮的實操經驗&#xff0c;說不定你們以后碰到類似情況&#xff0c;能少走些冤枉路。先跟大家交代下背景…

《JVM如何排查OOM》

目錄 一、什么是OOM&#xff1f; 二、OOM排查的整體思路 三、OOM排查工具大全 四、實戰&#xff1a;不同OOM場景的排查方法 場景1&#xff1a;Java heap space 場景2&#xff1a;Metaspace 場景3&#xff1a;GC overhead limit exceeded 五、高級排查技巧 1. 使用Arth…

ubuntu22.04 安裝Docker

一、更新系統包索引sudo apt update && sudo apt upgrade -y二、安裝必要依賴安裝 curl、gnupg等工具&#xff0c;用于添加 Docker 官方 GPG 密鑰和倉庫&#xff1a;sudo apt install -y ca-certificates curl gnupg三、添加 Docker 官方 GPG 密鑰sudo install -m 0755…

高低壓隔離器的技術演進與行業賦能

電力電子系統的安全架構與效率升級&#xff0c;始終依賴高低壓電路間的可靠隔離。高低壓隔離器作為能量傳輸與信號控制的核心媒介&#xff0c;通過持續迭代的絕緣技術與結構創新&#xff0c;為新能源裝備、工業驅動系統提供底層安全屏障。其阻斷電位差傳導、抑制電磁干擾的能力…

嵌入式 - ARM5

一、led點燈代碼優化1. 配置寄存器volatile1.??禁止優化??不對該變量的讀寫操作進行任何優化&#xff08;如刪除“冗余”讀取或延遲寫入&#xff09;。2.??強制內存訪問??每次訪問該變量時&#xff0c;必須直接從內存&#xff08;或硬件寄存器&#xff09;中讀取或寫入…

SSH登錄管理

兩種配置方法-密碼 -密鑰&#xff08;免密&#xff09;ansible 默認 rhel9 禁止 root 用密碼登陸&#xff0c;不禁止用密鑰登陸 ---修改方式----vim /etc/ssh/sshd_config 修改此文件#PermitRootLogin prohibit-passwordPermitRootLogin yes 改為允許systemctl res…

遠程連接--向日葵

下載安裝卸載 向日葵語言設置 點擊下面的圖標,點擊"設置": 問題解決 向日葵被連接之后自動黑屏 取消下面的勾選框: 向日葵連接之后黑屏 檢查系統的協議: echo $XDG_SESSION_TYPE 如果是: wayland 需要切換為x11. 設置永久默認使用 X11: sudo vi /etc/gdm3/custom…

Liunx執行source /etc/profile 報錯, -bash: HISTTIMEFORMAT: readonly variable

今天在配置java環境變量時&#xff0c;執行source /etc/profile報錯&#xff0c;系統是統信OS&#xff0c;花了好長時間才解決&#xff0c;在這記錄一下&#xff0c;希望能幫助到大家問題截圖提示HISTTIMEFORMAT和PROMPT_COMMAND變量時只讀變量&#xff0c;不能設置屬性值解決辦…

什么是達林頓管?

簡單來說&#xff0c;達林頓管是一個“電流放大器中的大力士”。它的核心目的是用非常小的輸入電流&#xff08;基極電流&#xff09;去控制一個非常大的輸出電流&#xff08;集電極電流&#xff09;。達林頓管是由兩個三極管串聯而成&#xff0c;放大倍數是兩個三極管的放大倍…

嵌入式Linux學習_rk3588移植無線網卡驅動

記錄移植無線網卡驅動遇到的各種問題&#xff1a; 從官網上下載8821的驅動源碼復制一份上面的CONFIG_PLATFORM_ARM_RK2818&#xff0c;改成3588&#xff0c;然后選項改成y&#xff0c;并把autodetect關掉。 找到CONFIG_PLATFORM_ARM_RK2818&#xff0c;復制一份&#xff0c;改成…

MCP專題五、MCP 的未來趨勢與展望

MCP專題五:MCP 的未來趨勢與展望 5.1 引言 本專題前四章我們系統性地學習了 MCP(Model Context Protocol)的 發展背景、核心機制、Python 實戰方法以及典型應用場景。可以看到,MCP 并不僅僅是一個技術標準,它更像是 大模型與外部世界溝通的橋梁,推動了 AI 應用從“實驗…