🦞甩给AI即刻生成版本!
作为资深 Python 极客,请帮我生成一个名为「ObsidVoice」的 Windows 本地极速语音输入法。
特性:纯离线、0延迟、CPU推理(不占显存)、按 F8 录音/松手粘贴。 请严格按以下 5 步输出完整代码与执行指南:
一. 环境依赖 仅需提供此安装命令: `pip install funasr_onnx modelscope soundfile pyaudio keyboard pyperclip pyqt6 pyyaml numpy torch torchaudio`
二. 下载脚本 (
download.py) 写一个脚本:用 `AutoModel` 连网下载 `paraformer-zh`, `fsmn-vad`, `ct-punc` 到 `./models_cache`。提醒我运行后将下载的 `iic` 文件夹移至项目根目录的 `models` 中。
三. 配置文件 (config.yaml) 直接输出以下完整内容(用于实现纯离线 相对路径加载):
```yaml hotkey: "f8" mic_device_index: null sample_rate: 16000 asr_model: "./models/iic/speech_seaco_paraformer_large_asr_nat-zh-cn-16k-common-vocab8404-pytorch" vad_model: "./models/iic/speech_fsmn_vad_zh-cn-16k-common-pytorch" punc_model: "./models/iic/punc_ct-transformer_cn-en-common-vocab471067-large" device: "cpu" model_dir: "./models"
四. 主程序 (
main.py)
输出完整代码,必须严格包含以下 7 个极客级优化:
1.CPU锁:开头注入 os.environ["OMP_NUM_THREADS"] = str(max(1, os.cpu_count() or 4))
2.防爆锁:音频采集最大限制 30 秒,超时强制 paComplete。
3.向量化:用 np.sqrt(np.mean(samples**2)) 计算音频 RMS。
4.模型加载:必须带 disable_update=True 避免冷启动连网卡顿。
5.推理接口:核心识别严禁使用 chunk_size,必须用 self.model.generate(input=audio_data, fs=16000)。
6.UI动画:PyQt6 无边框 32px 纯黑胶囊窗,5 根随 RMS 动态跳动的波形柱。
7.输出注入:保存原剪贴板 -> copy新文本 -> 延迟 0.02s -> 模拟 ctrl v -> 恢复原剪贴板。
五. 打包命令
输出此命令,并提醒用户打包后必须手动将 models 文件夹和 config.yaml 移入 dist 目录: pyinstaller --onedir --name "极客语音输入法" --collect-all="funasr" --collect-all="jieba" --collect-all="onnxruntime" --collect-all="torch" --hidden-import="torchaudio"
main.py
做了一个Windows 版本的语音输入。
也给开源了,随便用。
链接:
github.com/lingge66/Lingge_V…
🔒 完全离线:
声纹数据与识别模型全部运行在本地,无需联网,彻底杜绝隐私泄露。
⚡ 极速响应:
集成 Paraformer-zh FSMN-VAD CT-Punc 管道,CPU 环境下端到端延迟稳定在 0.25∼0.35s。
🎛️ 全局热键:
默认 F8 键,按下开始录音,松开自动上屏,无缝融入现有工作流。
🖥️ 极简 HUD:
$32\text{px}$ 黑色磨砂悬浮窗,实时显示音量波形与识别状态,不遮挡主窗口。
🛠️ 深度优化:
PyTorch 线程独占绑定、向量化音频 RMS 计算、剪贴板时序压缩、防爆内存保护。
📦 开箱即用:
首次运行自动下载,支持 config.yaml 热配置与系统托盘控制。