blah s peech to- t ext可让您从Linux上的语音输入文本,并带有键盘快捷键和窃窃私语。启动您的麦克风并在离线上执行高质量的多语言语音识别。随着本地LLM的扩展,它成为与Linux计算机交谈的有效工具。
Blahst可能是Linux的最精美的语音对文本输入工具,坐在Whisper.cpp的顶部。
wsiml脚本从命令行转换使用低资源,优化的命令行工具,口语文本输入发生得非常快。这是一个带有某些本地LLM功能(AI助手,翻译,调度程序,测试阶段的CLI指南)的演示视频(请取消音频):
在上面的视频中,音频始于系统吞噬屏幕截图(我的gnome扩展名为“ voluble”,都会说出所有GNOME桌面通知),然后进行多次转弯语音输入/识别。最终证明的是使用Blahst(whinper.cpp)转录的文本的Upcommmomm“ AI函数”之一,将其格式化为LLM提示符,并将其发送给本地的多语言LLM(Llama.cpp或Lllamafile),以此为文本返回中文翻译,并使用Neural Tts返回中文。使用精益可执行文件从命令行中进行安排,使系统令人惊讶(从视频中,您可以看到PC几乎没有汗水 - 温度保持低味道。)
上面的视频(请取消静音)演示了使用WSI修改的Blooper的使用,以循环转录,直到用户终止语音输入以更长的暂停(〜3sec作为预设)为止。通过使用Xdotool(或Wayland用户的Ydotool),文本会自动粘贴在任何暂停(或Hotkey Interuption)上。对于上面的视频,语音是由合成语音产生的,并由麦克风收集。这使我可以同时编辑文本(多任务,不要在家尝试:)。最后,顶杆麦克风图标应消失,表明程序退出。它不会在视频中发生,因为屏幕截图实用程序也对图标也有主张。
Blahst的想法是成为蒙古突袭的无UI软件。简短而强大的CPU/GPU动作爆发,然后完全消失了,剪贴板和相对桌面和平中只有文字痕迹。只需使用一对热键从麦克风开始和停止录制,然后将记录的语音发送到Whisper.cpp [服务器],该语音将转录的文本转载到剪贴板中(除非您在此之前由本地LLM传递)。一种通用方法,应该在大多数Linux桌面环境和分布中起作用。
工作是由其中一个脚本完成的:
语音识别由Whisper.cpp执行,必须在Linux系统上进行预编译或作为LAN或Localhost上的服务器实例可用。替代方案,您可以选择仅下载并使用实际的便携式可执行文件(带有嵌入式耳语模型)Whisperfile,现在是Llamafile存储库的一部分。
当用热键启动语音输入时,麦克风指示器出现在顶部杆(至少在侏儒中),并在记录的持续时间内显示(可以与另一个热键交织)。麦克风图标从顶部栏中的消失表示完成,并且可以从剪贴板粘贴抄录的文本。在较慢的系统上,麦克风图标消失后,由于转录时间较长,文本到达剪贴板之前可能会稍有延迟。在我的计算机上,通过hisper.cpp服务器API,对于口语文本的平均段落,它的平均段落小于150毫秒(300毫秒,局部hisper.cpp)。
例如,对于仅使用标准CTRL+V键盘操作,标准剪贴板将在X11和Wayland( wsi或wsiml )下使用,而wsi -p (或wsiml -p )使用主要卖出,并且文本使用中间鼠标按钮粘贴)。对于左手糊,可以将语音记录降级为用右手触发的热键。 **例如,我已经在数字键盘上设置了未使用的“+”(开始录制)和“插入”(停止录制)键。


install-wsi处理大多数)中。免责声明:作者对与本文档内容互动可能不会导致的任何结果都不承担任何责任,也不承担任何责任。拟议的动作和自动化(例如,安装位置等)只是建议,它基于作者的选择和意见。由于它们可能不符合所有人的口味或特定情况,因此请根据需要进行调整。
在您选择的文件夹中,克隆blahst存储库,然后从下面选择一个安装方法:
git clone https://github.com/QuantiusBenignus/BlahST.git
cd ./BlahST
(假设已安装了Wishper.cpp,并且在克隆的Whisper.cpp repo中使用'make'编译的“主要”可执行文件。请参见前提条件部分)
cd $HOME/.local/bin; chmod +x wsi wsiAI wsiml
$HOME/.local/bin/ (您的$路径的一部分)中创建它 ln -s /full/path/to/whisper.cpp/main $HOME/.local/bin/transcribe
如果转录不在您的$路径中,请在WSI中编辑对其的调用以包括绝对路径,或将其位置添加到$路径变量中。否则脚本将失败。如果您不想编译Whisper.cpp,或者除此之外,请下载并设置合适的hisperfile的可执行文件:例如:
cd $HOME/.local/bin
wget https://huggingface.co/Mozilla/whisperfile/resolve/main/whisper-tiny.en.llamafile
chmod +x whisper-tiny.en.llamafile
在开始的wsi , wsiAI , wsiml或blooper脚本中,有一个清晰标记的部分,命名为“用户配置块” ,其中所有用户可配置的变量都已收集。大多数可以剩下的,但重要的是您想在转录过程中使用的(Whisper,LLM,TTS)模型文件的位置(或Whisper.cpp服务器的IP和端口号)。如果使用Whisperfile,请将Whisperfile变量设置为先前下载的可执行文件hisperfile的文件名,即WHISPERFILE=whisper-tiny.en.llamafile (必须在$ PATH中)。
开始和停止语音输入,用于手册和自动安装
/home/yourusername/.local/bin/wsi -p中用于使用中间鼠标按钮或将其更改为.../wsi使用剪贴板。wsiml替换wsi ,如果使用hisperfile,请添加-w标志,即/home/yourusername/.local/bin/wsi -w )。最后,要采样LLM函数,请用wsiAI替换wsi 。编目脚本在呼叫Sox(REC)中具有沉默检测过滤器,并将在2秒内停止(在最好的情况下)记录(在最好的情况下)。此外,如果一个人不想等待或遇到静音检测阈值的问题:
对于那些希望能够以伟大的骇客精神手动将录音的人交织在一起,我们将使用系统内置的功能:
pkill --signal 2 rec这很简单。只需确保尚未设置新的密钥绑定。现在,当脚本录制语音时,可以使用新的密钥组合将其停止,并且转录将开始立即开始。
/home/yourusername/.local/bin/wsi -p or .../wsi用于使用剪贴板。wsiml替换wsi ,如果使用hisperfile,请添加-w标志,即/home/yourusername/.local/bin/wsi -w )。最后,要采样LLM函数,请用wsiAI替换wsi 。pkill --signal 2 rec进行类似的进行。/home/yourusername/.local/bin/wsi或.../wsi -pwsiml替换wsi ,如果使用hisperfile,请添加-w标志,即/home/yourusername/.local/bin/wsi -w )。最后,要采样LLM函数,请用wsiAI替换wsi 。pkill --signal 2 rec进行类似的进行。请注意,取决于系统上安装的版本,上述步骤可能会有些差异。对于许多其他环境,例如伴侣,肉桂,LXQT,Deepin等。这些步骤应与上面的示例有些相似。请为您的系统桌面环境咨询文档。
在热键组合的印刷机上, wsi -p脚本将录制语音(用热键或沉默检测停止),使用Whisper.cpp的本地副本,然后将抄录的文本发送到下面的主要选择,无论是X11还是Wayland。然后,所有要做的就是将其粘贴在所需的任何地方的中间鼠标按钮。 (对于用右手握住老鼠的人们,为左手录制热键是有意义的。)
如果使用没有标志的wsi (方法可以共存,只需设置不同的热键集),则将转录的文本发送到X11或Wayland下的剪贴板(不是主要选择)。然后,粘贴发生在CTRL+V (用于GNOME终端的CTRL+SHIFT+V )或SHIFT+INSert键照常时发生。 (对于大多数人来说,右手热键都可以正常工作。)
如果使用wsi -n (用自己的热键选择)在网络上转录,则该脚本将尝试将记录的音频发送到运行,正确设置Whisper.cpp服务器(在LAN或LAN localhost上)。然后,它将收集文本响应并格式化以粘贴使用CTRL+V (用于GNOME终端的CTRL+SHIFT+V )或SHIFT+INSert键(用中间鼠标按钮粘贴使用wsi -n -p代替)。
如果使用hisperfile而不是或除了汇编的hisper.cpp之外,请使用wsi -w ...调用脚本,并且该脚本将使用预设可在嵌入式选择的选择的可执行操作可执行文件中使用。
对于多语言用户,除了WSI的功能外, wsiml还提供了指定语言的功能,例如-l fr ,以及使用-t转换为英语的选项。用户原则上可以将多个热键分配给他们转录或翻译的各种语言。例如,可以设置另外两个热键,一个用于转录,另一种用于从法语转换,通过分配命令wsiml -l fr和wsiml -l fr -t相应地。
实验:用户可以使用所提供的脚本Blooper进行连续的自动语音到文本输入(无需按CTRL+V或单击中间鼠标按钮。)在上面的第二个视频中证明了这一点。请注意,该剪贴板默认使用,文本将在键盘式载体下自动涂抹,但是原则上可以设置主要选择,将模拟鼠标按钮单击,并且在鼠标指针的当前位置粘贴的文本(在某些任意)时间(有点任意)时间为文本。请注意,这取决于沉默检测,这取决于您的物理环境。在嘈杂的环境中,使用热键停止录制。
我们不能任意提高阈值,因为如果一个人在演讲结束时始终如一地降低声音(淡出),则如果阈值高,它可能会被切断。在这种情况下,将其降低到几个%。
最好试图通过振幅与噪声区分(清晰地说,接近麦克风),同时最小化外部噪声(麦克风的遮蔽位置,降噪硬件等)具有良好的语音信号水平,因此阈值可以更有效,因为SNR(语音到噪声比率:-)有效地增加了阈值。
演讲被捕获后,将通过transcribe (whisper.cpp)进行语音识别。这将比实时发生快(尤其是使用快速CPU,或者如果您的Whisper.CPP安装使用CUDA)。可以调整通过将-tn添加到转录的命令行参数中使用的处理线程的数量(请参阅whinper.cpp文档)。然后,该脚本将解析文本以删除非语法工件,将其格式化并使用X11或Wayland工具将其发送到主要选择(剪贴板)。
原则上,Whisper(Whisper.cpp)是多语言的,并且使用正确的模型文件,此应用程序将输出以正确语言转录的UTF-8文本。 wsiml脚本专用于多语言使用,因此用户能够选择语言进行语音输入(使用-l LC标志,其中LC为语言代码),还可以将所选输入语言的语音转换为使用-t标志的英语。用户可以将多个热键分配给他们要转录或翻译的各种语言。例如,可以设置另外两个热键,一个用于转录,另一种用于从法语转换,通过分配命令wsiml -l fr和wsiml -l fr -t相应地。
请注意,使用服务器模式时,现在您有2个选择。您可以使用预编译的hisper.cpp服务器或下载的hisperfile(在服务器模式下)在预配置的主机和端口号上侦听。编排脚本以相同的方式接近他们。
语音到文本的转录是内存和CPU密集型任务,而快速存储进行读取和写入访问只能有所帮助。这就是为什么WSI将临时文件和资源文件存储在内存中,以供速度和减少SSD/HDD“磨削”: TEMPD='/dev/shm' 。这种“ TMPFS”类型的安装点是在RAM中创建的(假设您有足够的时间,例如至少8GB),并且可以由内核提供用于用户空间应用程序。关闭计算机时,它会自动擦除,这很好,因为我们不需要中间文件。实际上,对于某些类型的应用程序(查看您的电子),将Systems Wide /TMP安装点还保留在RAM中是有益的(IMHO)。将 /TMP移动到RAM可能会加快应用程序启动。任何电子应用程序的欢迎加速。以最简单的形式,这种过渡很容易,只需运行:
echo "tmpfs /tmp tmpfs rw,nosuid,nodev" | sudo tee -a /etc/fstab ,然后重新启动Linux计算机。由于上述原因,特别是如果HDD是主要存储媒体,也可以将Whisper.cpp所需的ASR模型文件移动到同一位置(/dev/shm)所需的ASR模型文件。这些是大文件,可以在终端会话开始时(或在系统启动)的开头转移到此位置。可以使用您的.profile文件来完成此操作,以完成此操作:
([ -f /dev/shm/ggml-base.en.bin ] || cp /path/to/your/local/whisper.cpp/models/ggml* /dev/shm/)