有没有适合 Linux 的体面的语音识别软件?

Fra*_*urt 84 software-rec speech-recognition

问题的简短版本:我正在寻找一种在 Linux 上运行并且具有不错的准确性和可用性的语音识别软件。任何许可证和价格都可以。它不应该仅限于语音命令,因为我希望能够口述文本。


更多细节:

我不满意地尝试了以下内容:

上述所有原生 Linux 解决方案的准确性和可用性都很差(或者一些不允许自由文本听写而只允许语音命令)。我所说的准确度差是指准确度远低于我在下面提到的其他平台的语音识别软件的准确度。至于 Wine + Dragon NaturallySpeaking,根据我的经验,它一直崩溃,不幸的是,我似乎并不是唯一一个遇到此类问题的人。

在 Microsoft Windows 上,我使用 Dragon NaturallySpeaking,在 Apple Mac OS XI 上使用 Apple Dictation 和 DragonDictate,在 Android 上我使用 Google 语音识别,在 iOS 上我使用内置的 Apple 语音识别。

百度研究昨天发布了其语音识别库的代码,该库使用使用Torch 实现的连接主义时间分类Gigaom 的基准测试令人鼓舞,如下表所示,但我不知道有什么好的包装器可以使其在没有相当多的编码(和大量训练数据集)的情况下可用:

系统 清洁 (94) 嘈杂 (82) 综合 (176)
苹果听写 14.24 43.76 26.73
必应语音 11.73 36.12 22.05
谷歌API 6.64 30.47 16.72
机智 7.94 35.06 19.41
深度演讲 6.56 19.06 11.85

表 4:对原始音频评估的 3 个系统的结果 (%WER)。所有系统根据所有系统给出的预测对话语进行评分。每个数据集旁边括号中的数字,例如 Clean (94),是评分的话语数。

存在一些非常alpha的开源项目:

我也知道这种跟踪艺术状态和语音识别的最新成果(参考书目)的尝试。以及现有语音识别 API 的这一基准


我知道 Aenea,它允许在一台计算机上通过 Dragonfly 进行语音识别以将事件发送到另一台计算机,但它有一些延迟成本:

在此处输入图片说明

我也知道这两个探讨 Linux 语音识别选项的演讲:

ide*_*n42 28

尝试nerd-dictation,这是访问 VOSK-API 的简单方法,VOSK-API 是一个高质量的离线、开源语音到文本引擎,可与 X11 和 Wayland 配合使用。

请参阅演示视频


完全公开,我找不到任何适合我的用例的解决方案,所以我编写了这个小实用程序来解决我自己的问题。


sho*_*ner 22

现在我正在尝试在我的 android 智能手机上结合使用 KDE 连接和谷歌语音识别。

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
Run Code Online (Sandbox Code Playgroud)

这种安装的缺点是它会安装一堆 KDE 软件包,如果您不使用 KDE 桌面环境,则不需要这些软件包。

将 Android 设备与计算机配对后(它们必须在同一网络上),您可以使用 android 键盘,然后单击/按下麦克风以使用 Google 语音识别。当您说话时,文本将开始出现在您的 Linux 计算机上光标处于活动状态的任何地方。

至于结果,它们对我来说有点复杂,因为我目前正在编写一些技术天体物理学文档,而 Google 语音识别正在努力处理您通常不阅读的行话。也忘记它弄清楚标点符号或正确的大写。

在此处输入图片说明

在此处输入图片说明

  • 谷歌的问题在于它不是文本到语音,而是将其发送回谷歌。这对隐私不利。 (12认同)
  • 令我惊讶的是,这仍然是“最佳”答案,并继续慢慢积累选票。 (2认同)

Cir*_*郝海东 9

vosk-api

https://github.com/alphacep/vosk-api/

它支持 7 种以上的语言。

首先将文件转换为所需的格式,然后识别它:

ffmpeg -i file.mp3 -ar 16000 -ac 1 file.wav
Run Code Online (Sandbox Code Playgroud)

然后用pip安装vosk-api:

pip3 install vosk
Run Code Online (Sandbox Code Playgroud)

然后使用以下步骤:

git clone https://github.com/alphacep/vosk-api
cd vosk-api/python/example
wget https://alphacephei.com/kaldi/models/vosk-model-small-en-us-0.3.zip
unzip vosk-model-small-en-us-0.3.zip
mv vosk-model-small-en-us-0.3 model
python3 ./test_simple.py test.wav  > result.json
Run Code Online (Sandbox Code Playgroud)

结果以 JSON 格式存储。

同一目录还包含一个 SRT 字幕输出示例,它更具人类可读性,并且可以直接对具有该用例的人有用:

python3 -m pip install srt
python3 ./test_srt.py test.wav
Run Code Online (Sandbox Code Playgroud)

下面的部分显示了我对它进行的一些测试。

test.wav 案例分析

test.wav存储库中给出的示例以完美的美式英语口音和完美的音质表示,我将其转录为三个句子:

one zero zero zero one
nine oh two one oh
zero one eight zero three
Run Code Online (Sandbox Code Playgroud)

“九哦二一哦”说的很快,但还是清晰的。前一个“零”的“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
Run Code Online (Sandbox Code Playgroud)

所以我们可以看到犯了几个错误,大概部分是因为我们理解所有单词都是数字来帮助我们。

接下来,我还尝试vosk-model-en-us-aspire-0.2了 1.4GB 的下载量,而 36MB 的下载量vosk-model-small-en-us-0.3https://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
Run Code Online (Sandbox Code Playgroud)

结果是:

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
Run Code Online (Sandbox Code Playgroud)

又说对了一个词。

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
Run Code Online (Sandbox Code Playgroud)

音质不是很好,由于当时的技术,有很多麦克风嘶嘶声。然而,演讲非常清晰,停顿了一下。录音时长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
Run Code Online (Sandbox Code Playgroud)

并且同一段维基百科转录内容如下:

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.
Run Code Online (Sandbox Code Playgroud)

“我们选择去月球”案例研究

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
Run Code Online (Sandbox Code Playgroud)

音频时长: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,
Run Code Online (Sandbox Code Playgroud)

完美,除了缺少“the”和标点符号!

在 vosk-api 7af3e9a334fbb9557f2a41b97ba77b9745e120b3、Ubuntu 20.04、Lenovo ThinkPad P51 上测试

这个答案基于Nikolay Shmyrev 的https://askubuntu.com/a/423849/52975以及我的补充。

听写包装器

https://github.com/ideasman42/nerd-dictation(VOSK-API 的包装器)

  • 我基本上以写电子邮件为生,并且一直是 Dragon 的长期用户,首先直接在 Windows 中使用了几年,然后通过 Swype/KDE Con​​nect(得票最多的答案)使用了大约 6 个月。我今天尝试了 VOSK 和大型静态 daanzu 模型,发现它也差不多。普通英语的准确率超高,大多数都是选错同音字的错误。有一些烦恼,但龙也有一些烦恼。我错过了标点符号,但可能可以通过书呆子听写配置以某种方式破解它。书呆子听写是带有 Gnome 键盘绑定的便捷 UI。值得一试。 (3认同)
  • VOSK-API 非常好,但不提供基本的集成尝试 https://github.com/ideasman42/nerd-dictation - 一个将它与脉冲音频和 X11 集成的实用程序。 (2认同)

Fra*_*urt 8

OpenAI 的Whisper(MIT 许可证、Python 3.9、CLI)可产生一些高度准确的转录。使用它(在 Ubuntu 20.04 x64 LTS 上测试):

conda create -y --name whisperpy39 python==3.9
conda activate whisperpy39
pip install git+https://github.com/openai/whisper.git 
sudo apt update && sudo apt install ffmpeg
whisper recording.wav
whisper recording.wav --model large
Run Code Online (Sandbox Code Playgroud)

如果使用 Nvidia 3090 GPU,请在后面添加以下内容conda activate whisperpy39

pip install -f https://download.pytorch.org/whl/torch_stable.html
conda install pytorch==1.10.1 torchvision torchaudio cudatoolkit=11.0 -c pytorch
Run Code Online (Sandbox Code Playgroud)

性能信息如下。

模型推理时间:

尺寸 参数 纯英文型号 多语言模型 所需显存 相对速度
微小的 39米 tiny.en tiny 〜1GB 〜32x
根据 74米 base.en base 〜1GB 〜16x
小的 244米 small.en small 〜2GB 〜6x
中等的 769米 medium.en medium 〜5GB 〜2x
大的 1550米 不适用 large 〜10GB 1x

来自https://cdn.openai.com/papers/whisper.pdf的几个语料库的 WER :

在此输入图像描述

来自https://github.com/openai/whisper/blob/main/language-breakdown.svg的多种语言的 WER :

在此输入图像描述


alc*_*emy 5

在 Kubuntu 上尝试了 Simon 和 Julius 之后,我无法正确安装,之后我偶然想到了尝试使用开源 AI 助手 Mycroft(与 Google Home 和 Amazon Alexa 竞争)的想法。

在 KDE Plasmoid 安装失败后,我能够通过常规安装获得相当好的语音识别功能。它有一个 mycroft-cli-client 用于查看调试消息,还有一个活跃的社区论坛。有些文档有点过时,但我已经在论坛和 GitHub 上(如果适用)指出了这一点。

语音识别真的很不错,你可以安装Mimic,一个本地识别引擎。而且它是跨平台的,看到了一个我还没有尝试过的Android应用程序。我的下一步是重现一些我希望在 Plasmoid 中使用的基本桌面快捷命令,以及大型文本字段的听写技能。

https://github.com/MycroftAI/mycroft-core

https://community.mycroft.ai/


小智 5

您可能对Numen感兴趣,它是无需键盘或鼠标的桌面计算语音输入。这是另一个使用vosk-api语音识别的项目。

我是 Numen 的创建者,您可以在这里找到一个简短的演示