ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Buzz 命令行工具(CLI)完整指南:用 `buzz add` 从终端发起语音转写与翻译任务

Buzz 命令行工具(CLI)完整指南:用 `buzz add` 从终端发起语音转写与翻译任务 Buzz 命令行工具CLI完整指南用buzz add从终端发起语音转写与翻译任务【免费下载链接】buzzBuzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper.项目地址: https://gitcode.com/GitHub_Trending/buz/buzz导读Buzz 是一款基于 OpenAI Whisper 的离线语音转写与翻译桌面应用。除图形界面外它内置了一套完整的命令行接口CLI用户可以直接在终端里用一条命令完成音频/视频文件的转写transcribe、翻译translate与字幕导出SRT/VTT/TXT。本指南以官方文档 docs/docs/cli.md 为骨架结合 cli.py、transcriber.py 与 model_loader.py 等源码实现完整讲解buzz add的每一个参数、适用场景、模型解析逻辑与底层任务流转读完即可写出可直接运行的转写/翻译命令。一、CLI 的设计定位一个命令一个入口从源码看CLI 的解析入口位于 buzz/buzz.py应用启动时先创建ApplicationPyQt6 的QApplication随后调用parse_command_line(app)最后进入 Qt 事件循环app.exec()。app Application(sys.argv) parse_command_line(app) app.show_main_window() sys.exit(app.exec())CLI 解析逻辑全部集中在 buzz/cli.py。它基于 Qt 自带的QCommandLineParser实现顶层只支持一个子命令addcli.py。若不带任何参数启动则退化为普通 GUI 启动——命令行只是给图形应用预置任务的通道通过app.add_task(task, quit_on_completeTrue)将转写任务塞进主窗口的任务队列任务完成后自动退出应用。这里有两个值得注意的实现细节无参数时的行为parse()中若len(args) 0会直接parser.process(app)并返回应用照常显示主窗口与平时双击打开完全一致。错误处理参数非法时抛出CommandLineError在parse_command_line中被捕获向stderr打印错误信息与完整帮助文本后以退出码 1 结束cli.py。因此CLI 的适用场景非常明确脚本化批量转写、定时任务、CI 流水线、以及不想打开图形界面的快速单次转写。它不是一个独立的无头服务而是带 GUI 的批处理入口。二、buzz add完整参数详解buzz add用于新建一个或多个转写任务。完整用法如下Usage: buzz add [options] [file url file...]短横线参数对应源码中_add_command_options的定义cli.py位置参数Arguments可同时传入多个文件或 URL逐个创建转写任务多个任务依次排队执行全部完成后应用自动退出quit_on_completeTrue。2.1 任务类型-t, --task取值含义说明transcribe转写默认值将语音转为文字translate翻译翻译为英文Whisper 原生能力对应源码中的Task枚举transcriber.py任务标签的本地化文案定义在TASK_LABEL_TRANSLATIONS中。2.2 模型类型-m, --model-type取值对应引擎说明whisperOpenAI WhisperPyTorch默认值本地推理whispercppWhisper.cpp本地推理对 CPU 更友好支持 CoreML 加速huggingfaceHugging Face 模型需搭配--hfid指定仓库 IDfasterwhisperFaster Whisper基于 CTranslate2 的本地加速推理openaiapiOpenAI Whisper API云端推理需--openai-token对应源码中的CommandLineModelType枚举cli.py与ModelType枚举model_loader.py。2.3 模型大小-s, --model-size仅当--model-type为whisper、whispercpp或fasterwhisper时有效。文档给出常用五档tiny, base, small, medium, large # 默认: tiny需要说明的是源码中的WhisperModelSize枚举model_loader.py实际上支持更细的粒度除上述五档外还包含tiny.en、base.en、small.en、medium.en纯英文专用体积更小、large-v2、large-v3、large-v3-turbo、custom等取值。命令行解析使用的是parse_enum_optioncli.py它按枚举值严格匹配因此这些扩展取值同样可传入。选择参考以large为例体积越大精度越高、速度越慢也越吃内存/显存。tiny约 72MBbase约 138MBsmall约 460MBmedium约 1.5GBlarge系列约 2.9GB估算值见 model_loader.py 的WHISPER_MODEL_SIZES作者在注释中注明基于实际.pt文件大小。首次使用会自动下载之后走本地缓存。2.4 Hugging Face 模型--hfid仅当--model-type为huggingface时使用指定 Hugging Face 仓库 ID例如--hfid openai/whisper-tiny源码中对此有强制校验当--hfid为空且模型类型为HUGGING_FACE时直接抛出CommandLineError(--hfid is required when --model-type is huggingface)cli.py。2.5 语言-l, --languageWhisper 支持的语言代码文档中列出了 90 种取值例如enEnglish、frFrench、zhChinese、jaJapanese、deGerman、esSpanish等完整列表见 transcriber.py 的LANGUAGES字典共 99 个条目还包含yue粤语。留空表示自动检测语言源码在 cli.py 中做了合法性校验传入未收录的代码会报Invalid language option。2.6 初始提示词-p, --prompt向 Whisper 提供上下文提示可用于引导专业词汇、术语或说话风格例如人名、技术名词、特定拼写习惯。2.7 词级时间戳-w, --word-timestamps生成词级别的逐词时间戳1.2.0 起可用。对应TranscriptionOptions.word_level_timings字段。2.8 语音提取预处理-e, --extract-speech在转写前先从音频中提取人声1.3.0 起可用适合背景音乐/噪声较多的素材。对应TranscriptionOptions.extract_speech字段底层走 Demucs 分离流程仓库根目录下的demucs_repo/即相关依赖。2.9 OpenAI Token--openai-token仅当--model-type为openaiapi时使用。源码逻辑cli.py优先使用命令行传入的 token未传入时回退到 Buzz 系统钥匙串Keychain/凭据管理器中已保存的 tokenget_password(keyKey.OPENAI_API_KEY)两者皆无则报错No OpenAI access token found退出。也就是说只要之前通过 GUI 的OpenAI API Key设置保存过密钥命令行可以省略该参数直接调用云端 API。2.10 输出格式--srt/--vtt/--txt三个独立开关可同时开启分别导出 SRT字幕、VTTWeb 字幕、TXT纯文本。对应OutputFormat枚举transcriber.py。注意三个开关都不加时默认不导出文件结果只出现在应用界面中。输出文件命名规则由get_output_file_pathtranscriber.py控制默认模板支持{{ input_file_name }}、{{ task }}、{{ language }}、{{ model_type }}、{{ model_size }}、{{ date_time }}等占位符可在设置中自定义。2.11 隐藏主窗口--hide-gui1.2.0 起可用不显示主应用窗口静默执行任务。源码中通过app.hide_main_window True实现cli.pyApplication.show_main_window()会据此跳过window.show()application.py。适合脚本化使用配合--srt/--vtt/--txt即可做到纯无头批量出字幕。2.12 其他标准参数参数作用-h, --help显示命令行帮助--help-all显示包含 Qt 相关选项的完整帮助-v, --version显示版本信息-d, --output-directory指定导出目录源码中已实现但未写入文档见 cli.py补充说明--output-directory虽然未出现在官方帮助文档中但源码已完整实现Output directory参数 key 为d/output-directory实际可用用于把所有导出文件集中输出到指定目录。三、官方示例逐行拆解文档提供了两个典型示例下面逐行解读其背后的执行逻辑。示例 1调用 OpenAI API 将两个法语 MP3 翻译成英文buzz add --task translate --language fr --model-type openaiapi \ /Users/user/Downloads/1b3b03e4-8db5-ea2c-ace5-b71ff32e3304.mp3 \ /Users/user/Downloads/koaf9083k1lkpsfdi0.mp3执行流程--task translate任务为翻译为英文--language fr指定源语言为法语不依赖自动检测提高准确性--model-type openaiapi走云端 Whisper API未显式传--openai-token自动读取系统钥匙串中已保存的 token两个 MP3 作为位置参数创建两个排队任务因为没有指定任何导出格式开关结果仅保存在应用数据库中可通过界面查看。示例 2用 Whisper.cpp small 模型转写 MP4 并导出 SRT VTT 字幕buzz add --task transcribe --model-type whispercpp --model-size small \ --prompt My initial prompt --srt --vtt \ /Users/user/Downloads/buzz/1b3b03e4-8db5-ea2c-ace5-b71ff32e3304.mp4执行流程--model-type whispercpp--model-size small使用本地 Whisper.cpp 的 small 模型若本地无缓存会先自动下载ggml-small.bin下载逻辑见 model_loader.py 的_download_whisper_cpp--prompt提供初始提示词引导转写--srt --vtt任务完成后在输入文件同目录生成.srt与.vtt字幕文件位置参数为视频文件——说明 Buzz 不仅能处理音频也能直接处理 mp4/webm/mov/mkv 等视频格式支持格式清单见 transcriber.py。四、命令行背后的模型解析与任务流转4.1 模型自动下载机制_resolve_modelcli.py负责把参数解析成具体的TranscriptionModel其核心逻辑是model TranscriptionModel( model_typeModelType[model_type.name], whisper_model_sizemodel_size, hugging_face_model_idhugging_face_model_id, ) model_path model.get_local_model_path() if model_path is None: ModelDownloader(modelmodel).run() # 本地没有就自动下载 model_path model.get_local_model_path() if model_path is None: raise CommandLineError(Model not found)即CLI 首次使用某模型时会自动下载ModelDownloader类见 model_loader.py下载完成后再创建任务全程无需手动干预。4.2 任务如何入队_add_transcription_taskscli.py为每个输入路径创建一个FileTranscriptionTask通过is_url()基于urllib.parse判断是否包含 scheme 与 netloccli.py区分本地文件与 URL本地文件标记Source.FILE_IMPORTURL 标记Source.URL_IMPORTSource枚举见 transcriber.py——因此命令行传入的网址也是支持的1.2.0 起可用每个任务深拷贝TranscriptionOptions避免共享 UI 设置影响队列中的任务__post_init__transcriber.py最后app.add_task(task, quit_on_completeTrue)入队全部完成后自动退出。4.3 配置中的TranscriptionOptions全貌命令行参数最终汇聚成TranscriptionOptionstranscriber.py其中包含 CLI 未暴露但在 GUI 中可调的高级项例如温度采样序列temperature默认(0.0, 0.2, 0.4, 0.6, 0.8, 1.0)、静音阈值silence_threshold默认0.0025、段落间隔line_separator默认\n\n、转写步长transcription_step默认3.5以及 LLM 翻译相关配置。需要微调这类参数时只能通过图形界面的高级设置对应widgets/transcriber/advanced_settings_dialog.py完成命令行当前不直接暴露。五、验证与测试仓库在 tests/cli_test.py 中提供了 CLI 的集成测试TestCLI::test_cli它模拟了这样一条命令并断言指定输出目录中最终会出现.txt文件[ main.py, add, --task, transcribe, --model-size, tiny, --output-directory, mkdtemp(), --txt, test_audio_path, ]这段测试用例同时印证了两点--output-directory参数真实可用源码已实现CLI 的完整链路参数解析 → 模型加载 → 转写 → 导出文件由测试保障。六、实战建议与常见问题6.1 常用命令速查# 本地转写单个音频为 TXT使用默认 tiny 模型自动检测语言 buzz add --txt audio.mp3 # 静默模式隐藏 GUI批量转写整个目录下的文件并导出字幕 buzz add --hide-gui --srt --vtt file1.mp4 file2.m4a file3.wav # 指定模型与输出目录 buzz add -m whispercpp -s small -d /path/to/output --srt video.mp4 # 法语音频翻译成英文并导出文本 buzz add --task translate -l fr --txt french.mp3 # 使用 Hugging Face 上的自定义 Whisper 模型 buzz add --model-type huggingface --hfid openai/whisper-tiny --srt audio.wav6.2 注意事项导出格式需显式声明不指定--srt/--vtt/--txt时不会生成任何文件结果只在应用界面可见若配合--hide-gui且不声明导出格式任务会在后台静默完成请务必加上至少一种导出格式。首次运行需下载模型whisper/whispercpp/fasterwhisper的模型体积从几十 MB 到数 GB 不等首次使用对应模型时会自动下载耗时取决于网络模型缓存在 Buzz 用户缓存目录可用环境变量BUZZ_MODEL_ROOT自定义见 model_loader.py。云端 API 需要密钥openaiapi模式务必先保存 tokenGUI 设置或--openai-token参数。位置参数支持 URL从 1.2.0 起可以直接传 http(s) 链接作为输入。translate是翻译为英文这是 Whisper 模型的固有行为不是任意语对互译。结语buzz add把 Buzz 的图形化转写能力完整地暴露给了命令行从模型选型、语言指定、提示词注入到字幕导出一条命令即可完成离线语音转写/翻译闭环。其实现全部集中在 buzz/cli.py 一个文件内逻辑清晰、参数严谨、自带测试保障tests/cli_test.py非常适合作为脚本、自动化流程与批处理场景的可靠入口。【免费下载链接】buzzBuzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper.项目地址: https://gitcode.com/GitHub_Trending/buz/buzz创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表