
更新(2024-05-28):我刚刚合并了Whisperwriter的重大重写!我们已经从使用tkinter迁移到使用PyQt5进行UI,添加了一个新的设置窗口以进行配置,新的连续录制模式,对本地API的支持等等!请耐心等待,因为我弄清楚可能在此过程中引入的任何错误。如果您遇到任何问题,请打开新问题!
Whisperwriter是一个小型的语音到文本应用程序,它使用OpenAI的Whisper模型将从用户的麦克风到活动窗口自动转录录音。
启动后,脚本在后台运行,并等待按下键盘快捷键(默认情况下为ctrl+shift+space )。按下快捷方式时,应用程序开始从麦克风录制。有四种记录模式可供选择:
continuous (默认):在您的演讲中停顿了足够长的时间后,录制将停止。该应用将抄录文本,然后重新开始录制。要停止聆听,请再次按键盘快捷键。voice_activity_detection :在您的演讲中停顿了足够长的时间后,录制将停止。在再次按下键盘快捷键之前,录制不会启动。press_to_toggle记录将停止。在再次按下键盘快捷键之前,录制不会启动。hold_to_record录制将继续进行,直到键盘快捷键发布为止。直到键盘快捷键再次固定下来,录制才会启动。您可以在配置选项中更改键盘快捷键( activation_key )和记录模式。在录制和抄录时,显示了一个小的状态窗口,显示该过程的当前阶段(但可以关闭)。转录完成后,转录文本将自动写入活动窗口。
转录可以通过更快的python软件包在本地完成,也可以通过对OpenAI API的请求进行。默认情况下,该应用程序将使用本地模型,但是您可以在配置选项中更改它。如果选择使用API,则需要提供OpenAI API键或更改基本URL端点。
有趣的事实:使用VS代码,该项目的初始版本几乎全部与Chatgpt-4和Github Copilot进行了配对。实际上,包括大多数此读数在内的每一行都是由AI撰写的。最初的原型完成后,Whisperwriter也被用来写很多提示!
在运行此应用之前,您需要安装以下软件:
3.11 :https://www.python.org/downloads/如果您想在GPU上faster-whisper ,则还需要安装以下NVIDIA库:
以下是直接从faster-whisper回教徒中取出的:
注意: ctranslate2的最新版本仅支持CUDA 12。对于CUDA 11,当前的解决方法正在降级到3.24.0版本的ctranslate2 (可以使用pip install --force-reinsall ctranslate2==3.24.0完成。
有多种方法可以安装上述NVIDIA库。建议的方式在NVIDIA官方文档中描述,但我们还建议以下其他安装方法。
这些官方的NVIDIA CUDA DOCKER图像中安装了库(Cublas,Cudnn): nvidia/cuda:12.0.0-runtime-ubuntu20.04或nvidia/cuda:12.0.0-runtime-ubuntu22.04 。
pip安装(仅限Linux)在Linux上,这些库可以与pip一起安装。请注意,必须在启动Python之前设置LD_LIBRARY_PATH 。
pip install nvidia-cublas-cu12 nvidia-cudnn-cu12
export LD_LIBRARY_PATH= ` python3 -c ' import os; import nvidia.cublas.lib; import nvidia.cudnn.lib; print(os.path.dirname(nvidia.cublas.lib.__file__) + ":" + os.path.dirname(nvidia.cudnn.lib.__file__)) ' `注意: nvidia-cudnn-cu12版本9+由于其对Cudnn 9的依赖而似乎引起了问题(更快的Whisper当前不支持Cudnn 9)。确保您的Python软件包版本适用于Cudnn 8。
Purfview的Whisper-StandalOne-Win为单个存档提供了Windows&Linux所需的NVIDIA库。解压缩存档,并将库放在PATH中包含的目录中。
要设置并运行项目,请按照以下步骤:
git clone https://github.com/savbell/whisper-writer
cd whisper-writer
python -m venv venv
# For Linux and macOS:
source venv/bin/activate
# For Windows:
venvScriptsactivate
pip install -r requirements.txt
python run.py
在第一次运行时,应出现设置窗口。配置并保存后,将打开另一个窗口。按“启动”以激活键盘侦听器。按激活键( ctrl+shift+space默认情况下)开始记录并转录到活动窗口。
Whisperwriter使用配置文件自定义其行为。要设置配置,请打开“设置”窗口:

use_api :切换以选择使用OpenAI API还是本地耳语模型进行转录。 (默认: false )
common :API和本地模型共有的选项。
language :ISO-639-1格式转录的语言代码。 (默认: null )temperature :控制转录输出的随机性。较低的值使产出更加集中和确定性。 (默认: 0.0 )initial_prompt :用作调节转录的初始提示的字符串。更多信息:OpenAI提示指南。 (默认: null ) api :OpenAI API的配置选项。有关更多信息,请参见OpenAI API文档。
model :用于转录的模型。目前,只有whisper-1可用。 (默认: whisper-1 )base_url :API的基本URL。可以更改以使用本地API端点,例如Localai。 (默认: https://api.openai.com/v1 )api_key :OpenAI API的API键。非本地API使用所需。 (默认: null ) local :本地耳语模型的配置选项。
model :用于转录的模型。较大的型号提供了更好的准确性,但较慢。请参阅可用的模型和语言。 (默认: base )device :运行本地耳语模型的设备。使用cuda进行NVIDIA GPU, cpu仅用于CPU的处理,或者auto使系统自动选择最佳的可用设备。 (默认: auto )compute_type :用于本地耳语模型的计算类型。有关量化的更多信息。 (默认: default )condition_on_previous_text :设置为true以使用先前转录的文本作为下一个转录请求的提示。 (默认: true )vad_filter :设置为true使用语音活动检测(VAD)过滤器来从记录中删除沉默。 (默认: false )model_path :通往本地耳语模型的路径。如果未指定,将下载默认模型。 (默认: null ) activation_key :键盘快捷键,以激活记录和转录过程。带有+单独键。 (默认: ctrl+shift+space )input_backend :用于检测钥匙压的输入后端。 auto将尝试使用最佳可用后端。 (默认: auto )recording_mode :使用的录制模式。选项包括continuous (在语音中暂停之后进行自动重新录制,直到再次按激活键), voice_activity_detection (在语音中停止后停止录制), press_to_toggle (再次按激活键再次按下激活键), hold_to_record (释放激活键时停止录制录制时)。 (默认: continuous )sound_device :用于录制的声音设备的数字索引。要查找设备编号,请运行python -m sounddevice 。 (默认: null )sample_rate :用于记录的Hz中的采样率。 (默认: 16000 )silence_duration :毫秒的持续时间要等待沉默,然后停止录音。 (默认: 900 )min_duration :用于处理记录的毫秒中的最小持续时间。录音短于此将被丢弃。 (默认: 100 ) writing_key_press_delay :编写抄录文本时,每个键按之间的秒数延迟。 (默认: 0.005 )remove_trailing_period :设置为true以从抄录文本中删除后续时间。 (默认: false )add_trailing_space :设置为true以在抄录文本的末尾添加一个空间。 (默认: true )remove_capitalization :设置为true以将转录的文本转换为小写。 (默认: false )input_method :用于模拟键盘输入的方法。 (默认: pynput ) print_to_terminal :设置为true以打印脚本状态并将文本转录为终端。 (默认: true )hide_status_window :设置为true以隐藏操作过程中的状态窗口。 (默认: false )noise_on_completion :将转录输出后,设置为true播放噪声。 (默认: false )如果任何配置选项无效或未提供,则程序将使用默认值。
您可以在我们的问题跟踪器中看到所有报告的问题及其当前状态。如果遇到问题,请在可能的情况下打开一个新问题,并使用详细的描述和复制步骤(如果可能)。
以下是我计划在不久的将来添加的功能:
以下是目前未计划的功能:
可以在ChangElog中找到实现的功能。
欢迎捐款!我为自己的个人使用而创建了这个项目,并且没想到它会引起太大的关注,因此我没有花很多精力进行测试或使其他人轻松做出贡献。如果您有想法或建议,请随时打开拉动请求或创建新问题。我会尽力审查并在时间允许的情况下做出回应。
该项目已获得GNU通用公共许可证的许可。有关详细信息,请参见许可证文件。