ast
AST(Audio Spectrogram Transformer)是一款基于 PyTorch 开发的开源音频分类模型,源自 Interspeech 2021 的研究成果。它致力于解决传统音频处理依赖卷积神经网络(CNN)的局限,首创了完全摒弃卷积操作、纯粹基于注意力机制的架构。这一设计使 AST 能够直接处理可变长度的音频输入,在无需复杂预处理的情况下,于 AudioSet、ESC-50 及 Speech Commands V2 等多个权威基准测试中刷新了最高准确率记录。
AST 的核心技术亮点在于其“无卷积”特性,通过直接将音频频谱图转化为序列数据进行建模,不仅简化了模型结构,还显著提升了对不同音频任务的泛化能力。项目提供了详尽的训练脚本和预训练模型,支持用户通过少量代码甚至一键式脚本快速复现顶尖效果,同时也包含了 Google Colab 演示以便直观体验。
这款工具非常适合音频领域的研究人员、算法工程师及深度学习开发者使用。无论是希望探索 Transformer 在音频领域应用的研究者,还是需要高效基线模型进行二次开发的工程师,AST 都能提供强有力的支持。其清晰的代码结构和灵活的配置方式,也让它成为学习先进音频分类技术的理想范例。
使用场景
某智能安防团队正在开发一套城市声景监测系统,需要自动识别街道上的异常声音(如玻璃破碎、汽车急刹或警笛)以触发预警。
没有 ast 时
- 依赖传统 CNN 模型处理音频,必须将不同长度的录音强行裁剪或填充为固定时长,导致关键声音特征丢失或引入大量无效噪声。
- 模型架构中混杂了大量卷积层,难以捕捉音频频谱图中的长距离时间依赖关系,对复杂背景音下的突发异响识别率低下。
- 复现业界最优效果极其困难,缺乏统一的训练流水线,团队需花费数周时间手动调整数据增强策略和超参数。
- 迁移到新场景成本高,每次更换数据集都需要从头训练模型,无法利用已有的大规模音频预训练知识。
使用 ast 后
- 利用 AST 纯注意力机制的特性,直接输入可变长度的音频频谱图,完整保留声音事件的时序特征,无需担心裁剪带来的信息损失。
- 作为首个无卷积的纯注意力音频模型,AST 能精准捕捉全局上下文关联,在嘈杂街道背景下对玻璃破碎等细微异常的识别准确率显著提升。
- 调用官方提供的 ESC-50 或 AudioSet 复现脚本,一键即可加载预训练权重并微调,几天内便能达到论文所述的 SOTA(最先进)性能指标。
- 借助强大的预训练模型进行下游任务迁移,仅需少量标注数据即可适应新的监控场景,大幅降低了数据采集和模型训练成本。
AST 通过纯注意力架构和开箱即用的预训练模型,让开发者能以极低门槛构建高精度、自适应的音频分类系统。
运行环境要求
- Linux
- 训练需要 NVIDIA GPU (测试环境为 4 张 GTX TITAN, 每张 12GB 显存)
- 推理可使用 CPU (Google Colab 演示无需 GPU)
未说明

快速开始
AST:音频谱图 Transformer
新闻
2023年5月:我们发布了音频大型语言模型 LTU(听、思考、理解)的演示,该模型能够进行零样本音频分类和高级推理。请尝试在线交互式演示 [这里]。
2022年11月:我们将 dataset 和超参数解耦,将超参数从 src/run.py 和 src/traintest.py 移至 egs/{audioset,esc50,speechcommands}/run.sh,以便更轻松地将脚本适配到新数据集。这可能会导致一些问题,如果您在运行任何配方时遇到问题,请及时报告。
2022年10月:我们新增了一个一键式、自包含的 Google Colab 脚本,用于进行带有注意力可视化功能的(预训练)AST 推理。您只需点击一下即可在 上用您自己的音频测试模型(无需 GPU)。
2022年5月:发现较新的 torchaudio 包在 SpecAugment 方面与旧版本的行为不同,会导致一个 bug。我们找到了一种解决方法并已修复。如果您感兴趣,请参阅 这里。
2022年3月:我们发布了一篇新的预印本 CMKD:基于 CNN/Transformer 的跨模型知识蒸馏用于音频分类,其中提出了一种基于知识蒸馏的方法,在不改变 AST 模型架构的情况下进一步提升其性能。
2022年2月:自监督 AST (SSAST) 的代码已发布 [这里]。SSAST 使用自监督预训练代替有监督的 ImageNet 预训练,因此它支持任意形状和大小的 patch(例如时间帧和方形 patch),并且表现良好。
2021年11月:用于训练 AST 和基线 efficientnet 模型的 PSLA 训练流程 代码已发布 [这里]。这是一个强大的音频分类训练流程,可用于大多数深度学习模型。此外,它还提供了一个一键式的 FSD50K 配方,可达到 SOTA 0.567 mAP 的成绩。
简介

本仓库包含了 Interspeech 2021 论文 AST:音频谱图 Transformer(Yuan Gong、Yu-An Chung、James Glass)中提出的 音频谱图 Transformer (AST) 的官方 PyTorch 实现。
AST 是首个 无卷积、纯 注意力驱动的音频分类模型,支持变长输入,并可应用于多种任务。我们在多个音频分类基准上评估了 AST,结果表明它在 AudioSet 上达到了 0.485 mAP 的新 SOTA 成绩,在 ESC-50 上准确率为 95.6%,在 Speech Commands V2 上准确率为 98.1%。更多详情请参阅论文及 ISCA SIGML 演讲。
欢迎您试用!AST 只需几行代码即可使用,我们还提供了配方,几乎一键就能复现 AudioSet、ESC-50 和 Speechcommands 上的 SOTA 结果。
AST 模型文件位于 src/models/ast_models.py,配方位于 egs/[audioset,esc50,speechcommands]/run.sh。当您运行 run.sh 时,它会调用 /src/run.py,后者再调用 /src/dataloader.py 和 /src/traintest.py,最终这些文件会调用 /src/models/ast_models.py。
我们还有一个一键式、自包含的 Google Colab 脚本,用于进行(预训练)AST 推理和注意力可视化。请通过 一键测试模型,使用您自己的音频(无需 GPU)。
引用
如果您觉得本仓库有用,请引用我们的论文。第一篇论文提出了音频谱图 Transformer,而第二篇论文则描述了我们应用于 AST 以在 AudioSet 上取得新 SOTA 成绩的训练流程。
@inproceedings{gong21b_interspeech,
author={Yuan Gong and Yu-An Chung and James Glass},
title={{AST: Audio Spectrogram Transformer}},
year=2021,
booktitle={Proc. Interspeech 2021},
pages={571--575},
doi={10.21437/Interspeech.2021-698}
}
@ARTICLE{gong_psla,
author={Gong, Yuan and Chung, Yu-An and Glass, James},
journal={IEEE/ACM Transactions on Audio, Speech, and Language Processing},
title={PSLA:通过预训练、采样、标注和聚合改进音频标记},
year={2021},
doi={10.1109/TASLP.2021.3120633}
}
入门指南
步骤 1. 克隆或下载此仓库,并将其设置为工作目录,创建虚拟环境并安装依赖项。
cd ast/
python3 -m venv venvast
source venvast/bin/activate
pip install -r requirements.txt
步骤 2. 测试 AST 模型。
ASTModel(label_dim=527, \
fstride=10, tstride=10, \
input_fdim=128, input_tdim=1024, \
imagenet_pretrain=True, audioset_pretrain=False, \
model_size='base384')
参数说明:label_dim:类别数量(默认值:527)。fstride:频率维度上补丁分割的步长。对于 16×16 的补丁,fstride=16 表示无重叠,fstride=10 表示有 6 的重叠(论文中采用的设置)。(默认值:10)tstride:时间维度上补丁分割的步长。对于 16×16 的补丁,tstride=16 表示无重叠,tstride=10 表示有 6 的重叠(论文中采用的设置)。(默认值:10)input_fdim:输入谱图的频率通道数。(默认值:128)input_tdim:输入谱图的时间帧数。(默认值:1024,即 10.24 秒)imagenet_pretrain:若为 True,则使用 ImageNet 预训练模型。(默认值:True,我们建议在所有任务中都设置为 True)audioset_pretrain:若为 True,则使用 AudioSet 和 ImageNet 的联合预训练模型。目前仅支持 fstride=tstride=10 的 base384 模型。(默认值:False,我们建议除 AudioSet 任务外,在其他任务中都设置为 True)model_size:AST 模型的大小,应为 [tiny224, small224, base224, base384] 中的一个(默认值:base384)。
输入: 形状为 [batch_size, temporal_frame_num, frequency_bin_num] 的张量。注意:输入谱图应使用数据集的均值和标准差进行归一化,请参阅 此处。
输出: 形状为 [batch_size, label_dim] 的原始 logits 张量(即未经过 Sigmoid 激活函数处理)。
cd ast/src
python
import os
import torch
from models import ASTModel
# 在此目录下下载预训练模型
os.environ['TORCH_HOME'] = '../pretrained_models'
# 假设每个输入谱图有 100 个时间帧
input_tdim = 100
# 假设任务有 527 个类别
label_dim = 527
# 创建一个伪输入:一批 10 张谱图,每张有 100 个时间帧和 128 个频率通道
test_input = torch.rand([10, input_tdim, 128])
# 创建一个 AST 模型
ast_mdl = ASTModel(label_dim=label_dim, input_tdim=input_tdim, imagenet_pretrain=True)
test_output = ast_mdl(test_input)
# 输出应为形状 [10, 527],即 10 个样本,每个样本包含 527 个类别的预测结果。
print(test_output.shape)
我们提供了一个一键式、自包含的 Google Colab 脚本,用于(预训练)AST 推理及注意力可视化。请通过点击 ,使用您自己的音频测试该模型(无需 GPU)。
ESC-50 使用流程
ESC-50 的使用流程位于 ast/egs/esc50/run_esc.sh,该脚本会自动下载 ESC-50 数据集并将其重采样至 16kHz,随后执行标准的 5 折交叉验证并报告结果。
该流程已在配备 12GB 显存的 4 张 GTX TITAN 显卡上测试完成。
结果保存在 ast/egs/esc50/exp/yourexpname/acc_fold.csv 中(包括第 1 至 5 折的准确率及平均准确率),您还可以在 result.csv 和 best_result.csv 中查看详细信息(各轮次/最佳轮次的准确率、AUC、损失等)。
我们附上了日志文件 ast/egs/esc50/test-esc50-f10-t10-p-b48-lr1e-5,该模型达到了 95.75% 的准确率。
要运行该流程,只需在 ast/egs/esc50/run_esc.sh 中注释掉 . /data/sls/scratch/share-201907/slstoolchainrc,如有需要可调整路径,然后执行:
cd ast/egs/esc50
(Slurm 用户) sbatch run_esc50.sh
(本地用户) ./run_esc50.sh
Speechcommands V2 使用流程
Speechcommands V2 的使用流程位于 ast/egs/speechcommands/run_sc.sh,该脚本会自动下载 Speechcommands V2 数据集,在训练集上训练 AST 模型,在验证集上进行验证,并在测试集上进行评估。
该流程已在配备 12GB 显存的 4 张 GTX TITAN 显卡上测试完成。
结果保存在 ast/egs/speechcommands/exp/yourexpname/eval_result.csv 中,格式为 [val_acc, val_AUC, eval_acc, eval_AUC],您还可以在 result.csv 中查看详细信息(各轮次的准确率、AUC、损失等)。
我们附上了日志文件 ast/egs/speechcommends/test-speechcommands-f10-t10-p-b128-lr2.5e-4-0.5-false,该模型达到了 98.12% 的准确率。
要运行该流程,只需在 ast/egs/esc50/run_sc.sh 中注释掉 . /data/sls/scratch/share-201907/slstoolchainrc,如有需要可调整路径,然后执行:
cd ast/egs/speechcommands
(Slurm 用户) sbatch run_sc.sh
(本地用户) ./run_sc.sh
Audioset 配方
Audioset 的配置稍微复杂一些,您需要自行准备数据的 JSON 文件(即 train_data.json 和 eval_data.json)。原因是 Audioset 的原始音频文件并未公开,需由您自行下载。我们已在 ast/egs/audioset/data/datafiles 中提供了一个示例 JSON 文件,请按照相同格式生成文件(您也可以参考 ast/egs/esc50/prep_esc50.py 和 ast/egs/speechcommands/prep_sc.py)。请确保标签编码与 ast/egs/audioset/data/class_labels_indices.csv 保持一致。
准备好 JSON 文件后,您还需要为训练数据生成采样权重文件(请参阅我们的 PSLA 论文,了解为何需要该文件):
cd ast/egs/audioset
python gen_weight_file.py ./data/datafiles/train_data.json
随后,只需修改 /ast/egs/audioset/run.sh 中的 tr_data 和 te_data,然后执行以下命令:
cd ast/egs/audioset
(Slurm 用户) sbatch run.sh
(本地用户) ./run.sh
您应该能够得到一个模型,其 mAP 分别为 0.448(未加权平均)和 0.459(加权平均)。这是论文中报道的最佳 单模型 结果。
每个 epoch 的结果会以 [mAP, mAUC, precision, recall, d_prime, train_loss, valid_loss, cum_mAP, cum_mAUC, lr] 的格式保存在 ast/egs/audioset/exp/yourexpname/result.csv 中,其中 cum_ 结果是检查点集成的结果(即对每个 epoch 的检查点模型预测进行平均,请参阅我们的 PSLA 论文 获取详细信息)。加权平均模型的结果则会以 [mAP, AUC, precision, recall, d-prime] 的格式保存在 wa_result.csv 中。我们在 ast/egs/audioset/test-full-f10-t10-pTrue-b12-lr1e-5/ 中附上了我们的日志文件,该模型达到了 0.459 的 mAP。
为了复现 0.475 mAP 和 0.485 mAP 的集成结果,请使用相同的设置训练 3 个模型(即重复上述步骤三次),并再用不同的 tstride 和 fstride 训练 6 个模型,最后对这些模型的输出进行平均。具体操作请参考 ast/egs/audioset/ensemble.py。我们已将集成日志分别存放在 /ast/egs/audioset/exp/ensemble-s.log 和 ensemble-m.log 中。您也可以使用我们提供的预训练模型来测试集成效果。
我们的实验均采用 16kHz 的采样率。请注意,由于 YouTube 视频会随时间被移除,您下载的数据版本可能与我们的不同,因此可能会得到略微差异的结果。我们在 ast/egs/audioset/data/sanity_check/our_as_eval_id.csv 中提供了用于评估的音频 ID 列表。此外,请注意,为了与 PSLA 论文中的结果进行对比,在 平衡训练集 实验中(结果分别为 0.347 mAP 和 0.378 mAP),我们使用了增强标签集(即通过算法修改后的标签集,详情请参阅 PSLA 论文)。因此,如果您使用原始标签集进行平衡训练集的训练,结果可能会稍差。然而,在 完整 Audioset 实验 中,即 0.459 mAP(单模型)和 0.485 mAP(集成模型)的结果中,我们使用的数据和标签与官方发布的完全一致,因此您应该能够复现这些结果。
预训练模型
我们提供了完整的 Audioset 预训练模型以及 Speechcommands-V2-35 的预训练模型。
如果您希望在自己的任务上微调 Audioset 预训练的 AST 模型,只需在创建 AST 模型时将 audioset_pretrain=True 设置即可,系统会自动下载模型 1(0.459 mAP)。在我们的 ESC-50 配方中,就使用了 Audioset 的预训练。
若想复现集成实验,您可以使用 ast/egs/audioset/download_models.sh 脚本一键下载这些模型。集成模型 2–4 可达到 0.475 mAP,而集成模型 2–7 则可达到 0.485 mAP。下载完成后,您可以尝试运行 ast/egs/audioset/ensemble.py,只需修改 eval_data_path 和 mdl_list 即可运行。我们已将集成日志分别存放在 /ast/egs/audioset/exp/ensemble-s.log 和 ensemble-m.log 中。
请注意,我们用于训练和测试的音频均采用 16kHz 采样率(适用于所有 Audioset、SpeechCommands 和 ESC-50 数据集),因此如果您要使用预训练模型,请务必确保您的数据也采用 16kHz 采样率。
(注:以上链接均为 Dropbox 直链(可通过 wget 下载),大多数用户均可正常使用。对于无法通过上述 Dropbox 链接下载的用户,建议使用 VPN 或者访问 OneDrive 链接 或 腾讯微云链接。不过,OneDrive 和腾讯微云的链接并非直链,您需要手动下载 audioset_10_10_0.4593.pth[OneDrive] [腾讯微云],并将其放置在 ast/pretrained_models 目录下,以便在设置 audioset_pretrain=True 时正常工作,因为如果无法连接到 Dropbox,ast/src/models/ast_models.py 中的 wget 链接将会失败。)
使用预训练模型进行下游任务
您可以将预训练的 AST 模型应用于您自己的数据集。有两种方法可以实现这一点。
当然,您也可以只使用 ast/src/models/ast_models.py,将 audioset_pretrain=True 设置为真,并将其与您自己的训练流程一起使用。需要注意的是输入归一化问题:我们对输入进行了归一化处理,使其均值为 0、标准差为 0.5。为了使用预训练模型,您应该大致将输入归一化到这个范围。您可以查看 ast/src/get_norm_stats.py 了解我们如何计算这些统计量,或者直接使用我们的 AudioSet 归一化公式:input_spec = (input_spec + 4.26) / (4.57 * 2)。如果您已经有一个成熟的训练流程,那么直接使用它可能会更方便。
请注意,AST 需要较小的学习率(我们使用的学习率是 PSLA 论文 中提出的 CNN 模型的十分之一),并且收敛速度更快。因此,请针对您的任务搜索合适的学习率和学习率调度策略。
如果您希望使用我们的训练流程,则需要根据您的新数据集进行以下修改:
- 您需要为您的数据集创建一个 JSON 文件以及标签索引,可以参考
ast/egs/audioset/data/中的示例。 - 在
/your_dataset/run.sh中,您需要指定数据 JSON 文件的路径。此外,您还需要设置dataset_mean和dataset_std;如果不确定,可以使用我们的 AudioSet 统计值(均值=-4.27,标准差=4.57)。您还需设置audio_length,即音频的帧数(例如,以 10ms 的步长,10 秒的音频等于 1000 帧)。同时,您需要在metrics中选择[acc, mAP],在loss中选择[CE, BCE]。此外,您还需要设置初始学习率lr和学习率调度器lrscheduler_{start, step, decay}。
您还需要设置 SpecAug 参数(freqm 和 timem,我们建议掩码掉 128 个频段中的 48 个频段,以及 20% 的时间帧)、mixup 比例(即 mixup 样本的比例)、批量大小等。虽然看起来步骤较多,但如果您从我们的现有配方之一开始——ast/egs/[audioset, esc50, speechcommands]/run.sh——就会变得非常简单。
[注释]:3. 在 ast/src/run.py 的第 60–65 行,您需要添加归一化统计信息、输入帧长度,以及是否需要为您的数据集添加噪声增强。如果您有单独的验证集,请同时查看第 101–127 行。对于归一化统计信息,您需要计算数据集的均值和标准差(请参考 ast/src/get_norm_stats.py),或者直接使用我们的 AudioSet 归一化公式:input_spec = (input_spec + 4.26) / (4.57 * 2)。
[注释]:4. 在 ast/src/traintest.py 的第 55–82 行,您需要为您的任务指定学习率调度器、评估指标、warmup 设置以及优化器。
总结来说,要使用我们的训练流程,您需要创建数据文件并修改 Shell 脚本。您可以参考我们的 ESC-50 和 Speechcommands 配方。
另外,请注意,我们用于预训练的音频采样率为 16kHz,因此如果您想使用该预训练模型,也请确保您的数据是以 16kHz 采样率准备的。
联系方式
如果您有任何问题,欢迎提交 Issue(推荐)或发送邮件至 yuangong@mit.edu。
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器