开发人员的语音识别软件

47

文件终于说了,我需要在几个月内对手腕进行缓解。作为一名.NET开发人员,这可能会暂时结束我的生计,这是我不想做的事情。话虽如此,有没有好的无需使用手部的选项适用于开发人员?是否有人成功使用任何语音识别软件?

附言:我已经恢复到可以进行双手编程的程度了。Dragon Naturally Speaking效果还不错,但速度较慢,不像键盘那样我可以以超出预期的速度进行编程。


6
万一你回到这个话题,自九月以来情况如何?你最终做了什么?也许可以分享一些你的经历吗?我真的很感兴趣! - onnodb
程序员网站上可能有重复内容: 使用语音识别进行编程而不是键盘输入 - hippietrail
16个回答

28

它已经存在,而且它可行...

目前市面上有很多语音识别程序,其中Dragon NaturallySpeaking是我认为使用最广泛的一个。我自己也用过,并对其质量印象深刻。虽然那已经是几年前的事情了,但我想现在这方面的技术肯定有更大的进步。

...但它并不容易...

尽管它运行得非常好,但我不能说这是一种简单的解决方案。训练程序需要时间,即使如此,它也会犯错误。与打字相比,它非常缓慢,所以我不得不一遍又一遍地对自己说“不要用键盘,不要用键盘……”(之后我还是会用键盘)。我自己有点咕哝,这也没有让事情变得更好。特别是在最初的几周可能会很令人沮丧。如果你过度使用声音,甚至可能会出现与声音相关的问题

...特别是对于程序员!

总的来说,对于写普通文本/散文的人来说,这肯定是一种可行的解决方案。作为程序员,你处于一个完全不同的领域,没有真正的解决方案。也许现在情况已经改变了,但如果是这样,我会感到惊讶。

有什么问题?大多数SR软件都是用于识别正常语言的。程序员编写的代码非常晦涩难懂,很难找到能够将正常语言和代码之间进行转换的软件,甚至可能不可能找到。例如,你要如何口述以下内容:

if (somevar == 'a')
{
   print('You pressed a!');
}

使用普通SR程序中的命令,这是一件非常痛苦的事情: "if space left bracket equal sign equal sign apostrophe spell a apostrophe ...".而且我甚至没有谈到如何导航你的代码。您是否注意到在编程时您使用键盘的频率有多高,以及与“普通”用户使用键盘的方式有多不同?

如何充分利用它

到目前为止,我只使用过Dragon NaturallySpeaking (DNS),所以我只能就该产品发表看法。有一些针对程序员的有趣插件和网站:

  • Vocola是一个非官方插件,允许您轻松地将自己的命令添加到DNS中。我认为它是基本必需品。您还可以找到其他程序员编写的命令集,例如导航代码。它基于Python编写的软件包,因此周围也有一些更高级和花哨的软件包。还要查看Vocola的Resources page。(警告:当我使用它时,安装Vocola时会出现一些问题;请查看下面的新闻组获取信息!)
  • SpeechComputing.com是一个论坛/新闻组,有很多有趣的讨论。一个好的起点。

结束语

看起来这个问题的最佳解决方案是:

  • 寻找避开实际编码的方法。
  • 尝试康复。我有些不愿意推荐这本书,但它似乎对患有RSI / 腕管综合症和其他慢性疼痛问题的人非常有效:J.E. Sarno, Mindbody prescription。我现在正在使用它,我认为它绝对值得一读。

“Cryptic stuff”是我坚持使用VB.net和SQL的原因。每当我不得不口述JavaScript时,我就讨厌生命。 - Keith Walton
2
我也推荐J.E Sarno的这本书。它绝对有些道理。虽然它并没有奇迹般地治愈我,但它确实帮助我从完全不同的角度看待问题。 - user131948
我使用Dragonfly + Caster,并尝试过Vocola,但我认为Caster更加出色。相比较于打字,用它写LaTeX代码的速度可以提高30%,而写R代码的速度则会降低约30%。我不是专业程序员,但学习起来很容易上手。这绝对值得在这里提一下。 - kennyB

19
我使用Dragon NaturallySpeaking 10 Professional语音识别软件来编写VB.net和TSQL代码。VB.net更接近于口语化表达,但我认为它同样适用于C#或其他编程语言。我从零开始创建自己的词汇表以满足我的需要(这就是我使用专业版的原因)。
以下是基本步骤(假设您已经创建并训练好用户):
1. 基于“Base General - Empty Dictation”创建新的词汇表。 2. 不要扫描您的文档或电子邮件。 3. 添加包含特定于您所用编程语言(例如Dim,ByVal/by-val等)的关键字的列表及其发音。 4. 创建一个不包含注释的包含所有代码的.txt文档。 5. 从该文档中提取单词并将其添加到词汇表中,并加上它们的发音。 6. 使用该文档来训练词汇表的语言模型。
如果有人感兴趣,我会在有机会时写一份更详细的说明。
以下是如何通过语音输入SQL代码的方法。这里创建的单词列表可以包含在其他词汇表中,如果您是数据库开发人员的话。

@JulioRodrigues 看看这个:https://dev59.com/oXRC5IYBdhLWcg3wSu57 - Keith Walton

7

1
刚看到这个问题,想确保提到了那个视频。谢谢,Steven。顺便说一句,在那个视频的8分34秒处有一个很好的例子。 - KlaymenDK


5

另一个想法是找到另一个优秀的开发者来进行配对编程。这对我非常有效。我可以休息手,而不必减慢速度,最终产生更高质量的代码 - 或者至少不必审核那么多。


4

3
编程语音输入的黄金标准是VoiceCode。如果我没记错,它支持C++和Python。

3
如上所述,龙语音识别是目前最好的语音识别软件,然而微软语音识别也不落后,并且与Vista捆绑在一起。
Vocola最近已经移植到MSR中,并具有.Net集成功能。
一些建议:
1.学习口述需要一些时间。仅因为您会讲话并不意味着您知道如何使用语音识别软件。
2.熟练掌握混合SR和键盘/鼠标比全程无需手部操作更容易。
3.使用CodeRush或等效工具可以减少打字。

3

我几年前尝试过使用Dragon进行翻译,但结果是一堆混杂的词语和短语,非常糟糕 - 不建议使用。我知道那时候它是最好的工具,所以我并不乐观。

作为一个同样受苦的人,我的建议是:

  1. 找一份加班要求尽可能少的工作
  2. 尝试各种键盘。在我的经验中,全职使用笔记本电脑效果最佳。
  3. 开始进行低至中等强度的举重计划。

要小心“全职使用笔记本电脑”的问题。这可能适用于@marc,但对于大多数人,包括我自己,这是需要禁止的第一件事。在笔记本电脑上工作30分钟后,我的手腕比在台式机上工作8小时更疼痛。在使用笔记本电脑时如何保持正确的身体/手臂/手腕姿势?可以在此处找到一些好的通用建议:http://web.eecs.umich.edu/~cscott/rsi.html - AJJ

3
关于手腕问题,我在10年前学会了使用双手操作鼠标。这很容易做到,并且可以大大缓解紧张感。目前,我正在使用笔记本电脑,按触摸板按钮会让我的拇指感到紧张。
请小心。这些问题可能比人们想象的要持续更长时间。
附言:你可以添加一个“人体工程学”或类似的标签 - 标题可以被视为关于语音识别的开发。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接