问题的简短版本:我正在寻找一种在 Linux 上运行且具有良好准确性和可用性的语音识别软件。任何许可证和价格都可以。它不应该仅限于语音命令,因为我希望能够听写文本。
更多细节:
我尝试过以下方法但效果并不令人满意:
- 卡内基梅隆大学狮身人面像
- C语音控制
- 耳朵
- 朱利叶斯
- 卡尔迪(例如,Kaldi GStreamer 服务器)
- IBM ViaVoice(曾经在 Linux 上运行,但几年前已停产)
- NICO 人工神经网络工具包
- 开放思想演讲
- RWTH ASR
- 喊
- 西尔维乌斯(基于 Kaldi 语音识别工具包构建)
- 西蒙聆听
- 通过语音/Xvoice
- 酒+龙 自然言之+国联+蜻蜓+ 豆娘
- https://github.com/DragonComputer/Dragonfire:仅接受语音命令
所有上述原生 Linux 解决方案的准确性和可用性都很差(或者有些不允许自由文本听写,而只允许语音命令)。我所说的准确度差是指其准确度明显低于我下面提到的其他平台的语音识别软件的准确度。至于 Wine + Dragon NaturallySpeaking,根据我的经验,它不断崩溃,不幸的是,我似乎不是唯一一个遇到此类问题的人。
在 Microsoft Windows 上,我使用 Dragon NaturallySpeaking,在 Apple Mac OS X 上,我使用 Apple Dictation 和 DragonDictate,在 Android 上,我使用 Google 语音识别,在 iOS 上,我使用内置 Apple 语音识别。
百度研究院发布昨天这代码其语音识别库使用联结主义时间分类用火炬实现。基准来自吉高姆如下表所示,令人鼓舞,但我不知道有什么好的包装器可以使其在没有相当多的编码(和大型训练数据集)的情况下可用:
系统 清洁 (94) 吵闹 (82) 综合 (176) 苹果听写 14.24 43.76 26.73 必应演讲 11.73 36.12 22.05 谷歌应用程序编程接口 6.64 30.47 16.72 智慧人工智能 7.94 35.06 19.41 深度演讲 6.56 19.06 11.85 表 4:在原始音频上评估的 3 个系统的结果 (%WER)。所有系统均已评分仅有的关于所有系统给出的预测的话语。每个数据集旁边括号中的数字(例如 Clean (94))是得分的话语数。
存在一些非常阿尔法的开源项目:
- https://github.com/mozilla/DeepSpeech(Mozilla Vaani 项目的一部分:http://vaani.io (镜子))
- https://github.com/pannous/tensorflow-speech-recognition
- Vox,一个使用 Dragon NaturallySpeaking 控制 Linux 系统的系统:https://github.com/Franck-Dernoncourt/vox_linux+https://github.com/Franck-Dernoncourt/vox_windows
- https://github.com/facebookresearch/wav2letter
- https://github.com/espnet/espnet
- http://github.com/tensorflow/lingvo(由 Google 发布,Interspeech 2018 中提及)
我也知道这一点尝试跟踪语音识别的最新技术和最新成果(参考书目)。还有这个现有语音识别 API 的基准。
我知道 埃涅亚,它允许一台计算机上通过 Dragonfly 进行语音识别,将事件发送到另一台计算机,但它有一些延迟成本:
我还知道这两场探讨 Linux 语音识别选项的演讲:
- 2016 - 第十一期希望:使用开源语音识别进行语音编码(大卫·威廉姆斯·金)
- 2014 - Pycon:使用 Python 进行语音编码(塔维斯·拉德饰演)
答案1
沃斯克
https://github.com/alphacep/vosk-api/
它支持 20 多种语言。
在 Ubuntu 23.10 上测试安装软件和英文版本:
pipx install vosk
mkdir -p ~/var/lib/vosk
cd ~/var/lib/vosk
wget https://alphacephei.com/vosk/models/vosk-model-en-us-0.22.zip
unzip vosk-model-en-us-0.22.zip
cd -
然后用作:
wget -O think.ogg https://upload.wikimedia.org/wikipedia/commons/4/49/Think_Thomas_J_Watson_Sr.ogg
vosk-transcriber -m ~/var/lib/vosk/vosk-model-en-us-0.22 -i think.ogg -o think.srt -t srt
test.wav
案例分析
存储库中给出的示例test.wav
以完美的美式英语口音和完美的音质说出了三个句子,我将其转录为:
one zero zero zero one
nine oh two one oh
zero one eight zero three
“九哦二一哦”说得很快,但依然清晰。最后一个“0”之前的“z”听起来有点像“s”。
上面生成的 SRT 内容如下:
1
00:00:00,870 --> 00:00:02,610
what zero zero zero one
2
00:00:03,930 --> 00:00:04,950
no no to uno
3
00:00:06,240 --> 00:00:08,010
cyril one eight zero three
所以我们可以看到犯了一些错误,大概部分是因为我们知道所有的文字都是数字来帮助我们。
接下来我还尝试了vosk-model-en-us-aspire-0.2
下载 1.4GB 的文件,而下载的文件为 36MB vosk-model-small-en-us-0.3
,列于https://alphacephei.com/vosk/models:
mv model model.vosk-model-small-en-us-0.3
wget https://alphacephei.com/vosk/models/vosk-model-en-us-aspire-0.2.zip
unzip vosk-model-en-us-aspire-0.2.zip
mv vosk-model-en-us-aspire-0.2 model
结果是:
1
00:00:00,840 --> 00:00:02,610
one zero zero zero one
2
00:00:04,026 --> 00:00:04,980
i know what you window
3
00:00:06,270 --> 00:00:07,980
serial one eight zero three
又正确了一个词。
IBM“思考”演讲案例研究
现在让我们玩得开心吧。从https://en.wikipedia.org/wiki/Think_(IBM)(美国的公共领域):
wget https://upload.wikimedia.org/wikipedia/commons/4/49/Think_Thomas_J_Watson_Sr.ogg
ffmpeg -i Think_Thomas_J_Watson_Sr.ogg -ar 16000 -ac 1 think.wav
time python3 ./test_srt.py think.wav > think.srt
音质不是很好,由于当时的技术,麦克风有很多嘶嘶声。然而,讲话非常清晰且停顿。录音时长28秒,wav文件大小900KB。
转换耗时 32 秒。前三个句子的示例输出:
1
00:00:00,299 --> 00:00:01,650
and we must study
2
00:00:02,761 --> 00:00:05,549
reading listening name scott
3
00:00:06,300 --> 00:00:08,820
observing and thank you
和同一片段的维基百科转录内容如下:
1
00:00:00,518 --> 00:00:02,513
And we must study
2
00:00:02,613 --> 00:00:08,492
through reading, listening, discussing, observing, and thinking.
“我们选择去月球”案例研究
https://en.wikipedia.org/wiki/We_choose_to_go_to_the_Moon(公共区域)
好吧,再来一张有趣的。这段音频音质不错,偶尔有人群赞同的尖叫声,还有轻微的会场回声:
wget -O moon.ogv https://upload.wikimedia.org/wikipedia/commons/1/16/President_Kennedy%27s_Speech_at_Rice_University.ogv
ffmpeg -i moon.ogv -ss 09:12 -to 09:29 -q:a 0 -map a -ar 16000 -ac 1 moon.wav
time python3 ./test_srt.py moon.wav > moon.srt
音频时长:17s,wav文件大小532K,转换时间22s,输出:
1
00:00:01,410 --> 00:00:16,800
我们选择在这十年内登上月球并做其他事情,不是因为它们很容易,而是因为它们很困难,因为这个目标将有助于组织和衡量最好的我们的精力和技能
89
00:09:06,310 --> 00:09:18,900
We choose to go to the moon in this decade and do the other things,
90
00:09:18,900 --> 00:09:22,550
not because they are easy, but because they are hard,
91
00:09:22,550 --> 00:09:30,000
because that goal will serve to organize and measure the best of our energies and skills,
完美,除了缺少“the”和标点符号!
在 vosk-api 7af3e9a334fbb9557f2a41b97ba77b9745e120b3、Ubuntu 20.04 上测试,联想ThinkPad P51。
这个答案是基于https://askubuntu.com/a/423849/52975作者:Nikolay Shmyrev,由我补充。
NERD 听写(使用 VOSK-API)
https://github.com/ideasman42/nerd-dictation另请参阅:https://unix.stackexchange.com/a/651454/32558
基准测试
https://github.com/Picovoice/speech-to-text-benchmark提到了一些:
在这些软件上运行/查找 VOSK 与其他软件的结果会很有趣。
有关的:
答案2
答案3
现在我正在尝试在我的 Android 智能手机上结合使用 KDE connect 和 Google 语音识别。
KDE connect 允许您使用 Android 设备作为 Linux 计算机的输入设备(还有一些其他功能)。您需要在智能手机/平板电脑上从 Google Play 商店安装 KDE connect 应用程序,并在 Linux 计算机上安装 kdeconnect 和 Indicator-kdeconnect。对于 Ubuntu 系统,安装如下:
sudo add-apt-repository ppa:vikoadi/ppa
sudo apt update
sudo apt install kdeconnect indicator-kdeconnect
此安装的缺点是它会安装一堆 KDE 软件包,如果您不使用 KDE 桌面环境,则不需要这些软件包。
将 Android 设备与计算机配对后(它们必须位于同一网络),您可以使用 Android 键盘,然后单击/按下麦克风以使用 Google 语音识别。当您讲话时,Linux 计算机上光标处于活动状态的位置将开始出现文本。
至于结果,对我来说有点复杂,因为我目前正在编写一些技术天体物理学文档,而谷歌语音识别正在努力处理您通常不阅读的术语。也别忘了弄清楚标点符号或正确的大小写。
答案4
在 Kubuntu 上尝试了 Simon 和 Julius 之后,我无法正确安装,之后我偶然想到了尝试使用开源 AI 助手 Mycroft(与 Google Home 和 Amazon Alexa 竞争)的想法。
在 KDE Plasmoid 安装失败后,我能够通过常规安装获得相当好的语音识别功能。它有一个 mycroft-cli-client 用于查看调试消息,还有一个活跃的社区论坛。有些文档有点过时,但我已经在论坛和 GitHub 上(如果适用)指出了这一点。
语音识别真的很不错,你可以安装Mimic,一个本地识别引擎。而且它是跨平台的,看到了一个我还没有尝试过的Android应用程序。我的下一步是重现一些我希望在 Plasmoid 中使用的基本桌面快捷命令,以及大型文本字段的听写技能。