标题: 语音识别转文字 创建: 2025-02-27 12:17 更新: 2025-03-17 12:18 链接: https://scz.617.cn/windows/202502271217.txt -------------------------------------------------------------------------- 目录: ☆ 背景介绍 ☆ Buzz 1) 安装 2) 最简用法 2.1) 测试数据 3) 日志文件 4) 语音识别引擎与模型文件 4.1) Whisper 4.2) Whisper.cpp 4.3) Faster Whisper 5) models目录 6) 便携版Buzz ☆ Win10/11自带语音听写功能 (不推荐) ☆ CapsWriter-Offline (推荐) 1) 下载 2) 部署 3) 修改config.py 4) 启动服务端 5) 启动客户端 6) 录音并语音识别 6.1) paste = True 6.2) save_audio = True 6.3) C/S架构 7) 从音频文件到文本文件 7.1) 修正语音识别结果 8) 热词 ☆ 通义效率 -------------------------------------------------------------------------- ☆ 背景介绍 有时会在别人说点啥时用录音笔、手机APP等录制音频,事后导出音频文件,重新播 放内容,手工整理文字。记者采访,肯定有这需求。需求量大的群体,肯定有TA们专 业解决方案。 普通人生活中遇上此需求的不多,但也不是绝对没有。女科学家觉得我特能扯淡,好 几次在我正满嘴跑火车之际说:“停,等我录一下...(掏手机)...你接着说...”。 她这手机录音导出来是m4a后缀,当时来不及找现成的语音识别转文字工具,她就倍 速听录音,根据关键字手工摘录要点。 若录音不涉及隐私,有很多云端解决方案,剪映好像就是云端方案。干网络安全这行, 无法接受隐私数据上云。我不是搞媒体的,也不会AI相关编程,需要一个小白式傻瓜 化工具,本地离线使用。 还真有,github上的Buzz,是对OpenAI Whisper的离线封装版,缓存相应模型文件后, 使用时不要求必须联网;T14笔记本也能跑。 ☆ Buzz https://github.com/chidiwilliams/buzz OpenAI Whisper是通用语音识别引擎,自己布署使用Whisper,对普通用户有难度。 Buzz对之进行离线封装,提供Windows版安装包,简化布署与使用过程。 1) 安装 从github releases下载Buzz-1.2.0-windows.exe,有1.51GB。安装目录在 C:\Program Files (x86)\Buzz\ 占用空间5.03GB。Buzz是Python开发的,安装目录下_internal子目录有Python 3.11 解释引擎。 2) 最简用法 set http_proxy=socks5h://: set https_proxy=socks5h://: "C:\Program Files (x86)\Buzz\Buzz.exe" 设代理是防止GFW干扰模型文件的下载过程 -------------------------------------------------------------------------- 文件->Import File (或点击+号)->选中some.m4a (或其他格式的文件)->弹出对话框 模型 Whisper (可切换) Small (可切换) 任务 Transcribe 语言 Chinese (与some.m4a匹配) 逐词识别 清空 导出 选TXT、SRT (SRT带时间戳) -------------------------------------------------------------------------- "Import File"本来有快捷键Ctrl-O,但Windows中实测不灵,BUG。语音识别结束时 会在some.m4a所在目录生成相应的txt、srt文件;文件名有模板,可修改。 初次测试Buzz推荐用"Whisper+Small"。使用某些模型时会崩溃,那就换个模型重试。 2.1) 测试数据 some.m4a大概5m26s,是段两人之间日常对话。各种模型耗时如下: -------------------------------------------------------------------------- Whisper Small 1m39s (推荐) Large-V3 11m7s Large-V3-Turbo 3m15s (推荐) Whisper.cpp (风扇狂转) Small 1m38s Large-V3 12m39s Large-V3-Turbo 7m31s Faster Whisper Small 6m57s Large-V3 18m31s Large-V3-Turbo 4m41s -------------------------------------------------------------------------- 这种事不能简单看耗时,还得看语音识别效果,上面只是记录耗时参照系。 我觉得"Whisper+Small"、"Whisper+Large-V3-Turbo"够用了。 3) 日志文件 %USERPROFILE%\AppData\Local\Buzz\Buzz\Logs\logs.txt 日志对高级用户有点用,包含一些Buzz运行内部细节,比如模型文件从哪里下载,缓 存在哪个本地目录,等等。 4) 语音识别引擎与模型文件 Buzz集成了多种语音识别引擎 Whisper // OpenAI原版 Whisper.cpp // 原版的C/C++移植版 Faster Whisper // 用CTranslate2重新实现Whisper 这些引擎之间的区别,不是我能说清的。做语音识别时,需要"引擎+模型文件",每 种引擎有自己的模型文件集。Buzz安装包只有引擎,不含模型文件,后者非常占空间, 只在初次被用到时才触发下载并缓存到本地。 4.1) Whisper 有人不想在初次使用某个模型时等待下载,想提前下载模型文件并缓存: "帮助->偏好设定->Models",先选"组",有几种,对应不同引擎;选模型;最后点击 "Download"。 GFW未阻止访问"openaipublic.azureedge.net",可通过GUI下载Whisper引擎的模型 文件,无需挂线路。万一GUI下载失败,可手工下载pt文件,放置到: %USERPROFILE%\AppData\Local\Buzz\Buzz\Cache\models\whisper\ tiny.pt base.pt small.pt medium.pt large-v2.pt large-v3.pt large-v3-turbo.pt pt文件是OpenAI训练好的模型文件,上述这些pt文件共占9.33GB;因为太大,pt文件 未随Buzz安装包出现。 GUI中Whisper的Large、Large-V3实际对应同一个pt文件,不必重复下载。 帮别人布署Buzz时,可复制"Cache\models\whisper\"目录过去,至少对Whisper引擎 可行。 4.2) Whisper.cpp Whisper.cpp引擎是Whisper引擎的C/C++移植版。 GFW阻止访问"huggingface.co",通过GUI下载Whisper.cpp引擎的模型文件,需挂线 路。logs.txt中看到下载过程用到urllib3库,该库认环境变量http(s)_proxy,可挂 线路下载: set http_proxy=socks5h://: set https_proxy=socks5h://: "C:\Program Files (x86)\Buzz\Buzz.exe" 此处可用SOCKS5代理,并非只支持HTTP(S)代理。 4.3) Faster Whisper Faster Whisper用CTranslate2重新实现Whisper,CTranslate2是更快的推理引擎, 这些东西我不懂,说不清楚。Faster Whisper用Python开发。 GFW对下载Faster Whisper引擎的模型文件有干扰,同样需挂线路。得亏Whisper引擎 未受GFW干扰,否则初次使用Buzz的小白会很挫败。 Whisper.cpp与Faster Whisper的本地缓存目录结构相对复杂,不建议手工下载,还 是GUI下载吧。未测试过手工下载,复制"Cache\models\"目录倒是可行。 5) models目录 %USERPROFILE%\AppData\Local\Buzz\Buzz\Cache\models\ models目录含有各种引擎的模型文件,占用空间34.2GB,相当庞大;缺省情况下该目 录对C盘是很大负担,可用环境变量BUZZ_MODEL_ROOT指定models目录。 6) 便携版Buzz 官方未提供便携版Buzz,可自己绿色化。先执行Buzz-1.2.0-windows.exe安装,可指 定安装目录,不必安装到C盘;复制安装目录到"X:\path\Buzz\";appwiz.cpl卸载 Buzz。假设之前备份过models目录,复制成"X:\path\Buzz\Cache\models\"。至此, "X:\path\Buzz\"大约39.3GB,可复制到任意位置,比如U盘。按如下方式启动: set http_proxy=socks5h://: set https_proxy=socks5h://: set BUZZ_MODEL_ROOT=X:\path\Buzz\Cache\models X:\path\Buzz\Buzz.exe 编辑Buzz.bat -------------------------------------------------------------------------- @echo off rem set http_proxy=socks5h://: rem set https_proxy=socks5h://: set BUZZ_MODEL_ROOT=X:\path\Buzz\Cache\models start "" /B X:\path\Buzz\Buzz.exe exit -------------------------------------------------------------------------- ☆ Win10/11自带语音听写功能 (不推荐) -------------------------------------------------------------------------- VB-CABLE Virtual Audio Device https://vb-audio.com/Cable/ https://download.vb-audio.com/Download_CABLE/VBCABLE_Driver_Pack45.zip -------------------------------------------------------------------------- 非LTSB版Win10/11自带语音听写功能,能识别来自麦克风的音频输入,并自动转成文 字输出到某种文本域中,比如打开的记事本。但我们想要的场景是,一边播放音频, 一边根据前者自动听写到文本域中;音频输入不用麦克风,而是来自播放器的音频输 出。这种需求一般可用第三方软件配合解决,目前没有原生解决方案。 安装虚拟音频设备VB-CABLE,它同时提供虚拟的CABLE Output与CABLE Input设备, 所有来自CABLE Input的音频流直接转发到CABLE Output,有点像内录线。稳妥起见, 安装结束后重启OS。 实测将输入设备设为"立体声混音",并不适用此场景,必须装VB-CABLE。 参照下图调整音频相关设置: -------------------------------------------------------------------------- 设置 系统 声音 选择输出设备 CABLE In16 ch (VB-Audio Virtual Cable) CABLE Input (VB-Audio Virtual Cable) 这两种都可以,这里没有写错,是"CABLE Input" 选择输入设备 CABLE Output (VB-Audio Virtual Cable) 这里没有写错,是"CABLE Output" 时间和语言 语音 选择你使用设备时所讲的语言 中文 (根据实际情况调整) 已安装的语音包 中文 英语(美国) 隐私 语音 在线语音识别 On 麦克风 允许访问此设备上的麦克风 On 允许应用访问你的麦克风 On 具体的Microsoft Store应用可以全Off,包括相机、录音机 允许桌面应用访问你的麦克风 On -------------------------------------------------------------------------- a. 右键点击系统托盘中的音量图标,选择"声音" b. 在"声音"对话框中,点击"播放"选项卡,将"CABLE In16 ch"或"CABLE Input"设 为默认值 c. 在"声音"对话框中,点击"录制"选项卡,将"CABLE Output"设为默认值 -------------------------------------------------------------------------- 假设需要播放中文音频,在桌面右下角托盘区将输入法调成某种中文输入法,比如微 软五笔、微软拼音什么的,都可以,不要调成ENG美式键盘;但中文输入法本身可停 留在英文输入状态,这个无所谓。若托盘区是ENG美式键盘,将来听写中文音频时各 种幺蛾子。 Win+H呼叫自带语音听写功能,会在屏幕正上方出现提示横幅,其左侧有个麦克风图 标,点击它,可启用或停止听写功能。通过麦克风色调变化,可看出启用、停止状态。 打开记事本或其他文本处理软件,播放音频,启用听写功能。正上方横幅有一些提示 信息,比如正在初始化、正在聆听等等。鼠标焦点要放在记事本中,一切正常的话, 慢慢地其中就会出现与所播放音频对应的文字,即自动听写。 听写时勿将焦点从记事本移开,这算是大限制。我用虚拟机规避,这样Guest中不失 焦,Host中随便干啥。 Win10的语音听写能力很一般,并不推荐;据说Win11好一些,未实测。 ☆ CapsWriter-Offline (推荐) https://github.com/HaujetZhao/CapsWriter-Offline 网友在公众号评论区提到CapsWriter-Offline,中英文识别快速、准确,资源占用低, 完全离线使用,有效保护隐私。我试了,很强大,快速、准确、省资源,以后就用它 了,推荐。缺点是,不太适合特别小白的用户。 1) 下载 假设是Win10/11,从github releases下载如下文件: CapsWriter-Offline-Windows-64bit.zip models.zip 这就是全部,合起来大概1.16GB,比Buzz小太多。GFW对github的干扰有些迷,大多 数时候不挂线路直接可达,下载飞快;偶有干扰时,过会儿再试,比挂线路快。 2) 部署 假设将CapsWriter-Offline-Windows-64bit.zip展开到 X:\Green\CapsWriter-Offline\ 将models.zip展开到 X:\Green\CapsWriter-Offline\models\ 部署就这么简单。 3) 修改config.py 根据个人喜好做些修改 X:\Green\CapsWriter-Offline\config.py -------------------------------------------------------------------------- class ServerConfig: addr = '127.0.0.1' port = '6666' # # 输出文字时若中英之间不需要空格,此处可改为False # format_spell = False class ClientConfig: addr = '127.0.0.1' port = '6666' # # 若语音识别时,不想保存音频文件,此处可改为False # save_audio = False # # 若不想启用keyword.txt,此处可改为False # hot_kwd = False -------------------------------------------------------------------------- config.py中有许多参数,比如start_server.exe侦听、start_client.exe连接的IP 与端口,语音识别保存文本时是否同步保存音频文件,是否启用keyword.txt,等等。 这些参数都有注释,解释其基本含义。 上例hot_kwd设为False,也可直接修改 X:\Green\CapsWriter-Offline\keywords.txt 缺省有三个关键词,用#号注释掉。 4) 启动服务端 双击start_server.exe即可,也可在cmd中执行 start "" X:\Green\CapsWriter-Offline\start_server.exe 耐心等待服务端启动完成,有提示,比如: -------------------------------------------------------------------------- 模块加载完成 语音模型载入完成 标点模型载入完成 模型加载耗时 61.79s 开始服务 -------------------------------------------------------------------------- 5) 启动客户端 待服务端启动完成后再启动客户端,双击start_client.exe即可,也可在cmd中执行 start "" X:\Green\CapsWriter-Offline\start_client.exe 若提示"连接成功",即可使用客户端。 6) 录音并语音识别 假设焦点位于start_client.exe 缺省长按CapsLock键启用录音,提示"开始录音",要求输入设备是麦克风。长按 CapsLock的同时,正常说话,中英混杂无所谓。 松开CapsLock键停止录音并完成语音识别;该热键可通过config.py中shortcut参数 修改,但小白不大可能正确指定其他按键。start_client.exe"识别结果"行会显示文 字。 只有客户端启动的情况下,上述热键才可用,单启动服务端不行。 6.1) paste = True 缺省config.py中有个参数 paste = True 其效果是,停止录音并完成语音识别时,将文字先写入剪贴板,再模拟Ctrl-V。 长按CapsLock是全局热键,焦点离开start_client.exe时热键仍生效。假设焦点在记 事本之类的文本处理软件中时长按CapsLock开始录音;之后松开CapsLock停止录音, 记事本中会自动粘贴语音识别所得文字。这种类似于Win10/11的"Win+H"功能,但准 确、高效得多。 6.2) save_audio = True 除了剪贴板中文字,若config.py中save_audio为True,则有其他文件对应语音识别 结果。 比如录音时,我说,我就试试你能不能保存音频,然后得到如下目录与文件 -------------------------------------------------------------------------- X:\Green\CapsWriter-Offline\2025 | \---03 | 02.md | \---assets (20250302-185611)我就试试你能不能保存音频.mp3 -------------------------------------------------------------------------- 今天是2025年3月2日,如下文件是语音识别的文字版 X:\Green\CapsWriter-Offline\2025\03\02.md 如下文件是录音音频 X:\Green\CapsWriter-Offline\2025\03\assets\(20250302-185611)我就试试你能不能保存音频.mp3 mp3的文件名受config.py中audio_name_len参数影响,缺省为20,取语音识别结果的 前多少个字置于mp3文件名中。 save_audio为False时,不会生成2025目录,没有上述文件。 6.3) C/S架构 CapsWriter-Offline采用C/S架构,可一个Server多个Client,语音识别由Server完 成,Client提供用户操作接口。消耗资源的主要是Server,可部署在一台强劲的主机 上。Server、Client共用同一个config.py,不知基于什么考虑。 7) 从音频文件到文本文件 Client启动后,长按CapsLock录音;Client也可直接接受音视频文件,跳过录音环节。 由于是C/S架构,完全可以多开Client。 假设有some.m4a或其他格式音视频文件,将之拖放到start_client.exe上,会自动启 动客户端对some.m4a进行语音识别,输出相应结果。比"Buzz Whisper Small"快多了。 假设输入是 X:\path\some.m4a 则输出是 X:\path\some.json X:\path\some.merge.txt X:\path\some.srt X:\path\some.txt 两个txt是纯文字版,格式有差别,srt带时间戳,自己打开一看就明白。json的用途 后面再说。 也可命令行操作 X:\Green\CapsWriter-Offline\start_client.exe X:\path\some.m4a 需指定some.m4a绝对路径 7.1) 修正语音识别结果 假设手工修正some.txt,将之拖放到start_client.exe上,会自动根据some.txt找到 some.json,二者结合,同步修正some.srt。 也可命令行操作 X:\Green\CapsWriter-Offline\start_client.exe X:\path\some.txt 此功能只根据txt修正srt,不同步修正merge.txt。好像有点鸡肋,srt也是文本文件, 可直接手工修正srt,不需要先txt再srt。 8) 热词 有三个热词表 X:\Green\CapsWriter-Offline\ hot-en.txt hot-zh.txt hot-rule.txt 热词的作用是,识别到相应发音,按热词表中内容进行规范化输出,比如WiFi、IP的 大小写,听到赫兹时固定输出Hz,等等。 config.py中有参数决定是否启动这些热词表、是否区分声调,一般不需要改。 ☆ 通义效率 若无隐私问题,云端解决方案很多。从女科学家的学生那里得知,微信小程序「通义 效率」还不错;它有APP,也有PC网页版。手机验证码注册、登录。每天登录送10小 时转写时长。云端存储20GB。