我可以使用语音识别编写SQL吗?

问题描述 投票:36回答:2

我键入时手腕疼痛,我想开始使用语音识别编写SQL语句,存储过程和视图。

sql speech-recognition ergonomics naturallyspeaking code-by-voice
2个回答
71
投票

是。 SQL非常适合语音识别(因为它可以是一种编程语言),因为它的词汇量和句子结构有限。除了格式化SQL以使其看起来不错之外,我可以比输入更快地指示它。但是,口述代码不适合所有人。一开始可能会非常令人沮丧。尝试这种并坚持下去的人可能就是那些别无选择的人。

我使用Dragon NaturallySpeaking 10 Professional。 Professional版本具有创建这样的自定义词汇表所需的工具。版本9也应该可以正常工作。它很昂贵,所以如果可能的话,尽量让你工作的公司付钱。获得一个不错的耳机麦克风。 NaturallySpeaking附带的那个不够好(但你可能想先尝试一下,看看它是否适合你)。 KnowBrainer是麦克风推荐的好地方。

2009-01-05更新:我在SQL Server Management Studio中添加了以下针对口述的提示。

2012-01-04更新:我一直在跟踪微软的WSR已经有一段时间了,希望能够添加工具,从头开始轻松创建一个完全自定义的词汇表,就像我在本教程中使用NaturallySpeaking一样。不幸的是,这似乎只能通过API(SAPI)来完成。我没有时间编写该代码,因此我将继续使用NaturallySpeaking编写代码,直到出现更好的代码。

Preparation

清理您的数据库名称和代码

口述“SELECT PT_17, PT_28, PT_29 FROM HIK.dbo.PATINFO”将是一个痛苦的屁股,但我想这是可能的。你必须设置很多发音,因为NaturallySpeaking不知道“PT_17”会发出什么声音。这对于听写来说是更可取的:

SELECT Patient.FirstName, Patient.MiddleName, Patient.LastName FROM Claim.dbo.Patient AS Patient WHERE Patient.LastName LIKE '%smith%'

我切换到我的TSQL词汇表来指示上述声明。 LIKE声明的所有内容都是正如它所说的那样。 '%smith%'被称为“开放式单引号百分号符号sierra mike印度探戈酒店百分号关闭单引号[PAUSE]复合物 - ”。使用一致的表别名和始终在它们之前的字段有助于提高准确性,因为NaturallySpeaking可以统计一个单词出现在另一个单词附近的频率。

创建SQL关键字的单词列表

在每一行上加一个字。您可以选择使用反斜杠(\)和发音跟随单词。 NaturallySpeaking使用一个小的单词备份词典来确定你添加到词汇表中的单词的发音,因此找出SELECTFROMWHERE的发音是没有问题的。它有时可以找出一个复合词,并且它会像XACT_ABORT那样做出最好的猜测。我会为这些案件提供发音。您使用的数据库将确定列表包含的单词 - 请查看您的文档以获取关键字列表。你的清单看起来会像这样,但要长得多。

SELECT
WHERE
FROM
XACT_ABORT\exact-abort
MAXDOP
NOLOCK\no-lock
LEN
RETURNS
CURSOR
MONEY    

还要添加这些单词

\New-Line
\New-Paragraph
\All-Caps
\All-Caps-On
\All-Caps-Off
\Cap
\Caps-On
\Caps-Off
\No-Caps
\No-Caps-On
\No-Caps-Off
\No-Space
\No-Space-On
\No-Space-Off
\space-bar
\tab-key
a\alpha
b\bravo
c\charlie
d\delta
e\echo
f\foxtrot
g\golf
h\hotel
i\india
j\juliet
k\kilo
l\lima
m\mike
n\november
o\oscar
p\papa
q\quebec
r\romeo
s\sierra
t\tango
u\uniform
v\victor
w\whiskey
x\xray
y\yankee
z\zulu
PM
AM
one
two
three
four
five
six
seven
eight
nine
ten
eleven
twelve
thirteen
fourteen
fifteen
sixteen
seventeen
eighteen
nineteen
twenty
thirty
fourty
fifty
sixty
seventy
eighty
ninety
hundred
thousand
million
billion
trillion

保留此列表,因为您可能会多次修改它并重新创建词汇表以便按照您喜欢的方式获取它。

创建数据库对象名称的单词列表

这就是我在SQL Server中的做法:

SELECT DISTINCT * FROM 
(
SELECT DISTINCT [name] FROM Database1.[dbo].[sysobjects] WHERE xtype not IN ('F', 'S', 'PK', 'D', 'UQ') 
UNION 
SELECT DISTINCT column_name AS [name] FROM Database1.information_schema.[columns]
UNION
SELECT DISTINCT [name] FROM Database2.[dbo].[sysobjects] WHERE xtype not IN ('F', 'S', 'PK', 'D', 'UQ') 
UNION 
SELECT DISTINCT column_name AS [name] FROM Database2.information_schema.[columns]
...
) AS UnionTable

将结果复制并粘贴到文本文件中。

为数据库对象名创建发音

对上面列出的发音使用相同的格式。创建这些的简单方法是使用正则表达式搜索和替换功能。在SQL Server Management Studio或Visual Studio中,以下(非标准)正则表达式将为两个单词混合大小写名称创建发音。

Find: ^{[A-Z][a-z]+}{[A-Z][a-z]+}$
Replace: \0\\\1-\2

查看发音并清理任何看起来不正确的内容。对于首字母缩略词,ASP成为'A.S.P.'。保持这个列表。如果您决定为其他编程语言创建词汇表,那么如果您是数据库开发人员,则可能会包含这些词汇。

创建一个包含所有SQL代码的文本文档(视图,过程等)

SQL Server:

SELECT * FROM Database1.dbo.[View] UNION SELECT * FROM Database1.dbo.Routine UNION
SELECT * FROM Database2.dbo.[View] UNION SELECT * FROM Database2.dbo.Routine 
...
ORDER BY [Name]

删除注释和文字字符串。正则表达式搜索和替换适用于此。

Build your vocabulary

安装NaturallySpeaking并创建一个新用户(如果还没有)。

创建一个新的词汇表

点击“NaturallySpeaking |管理词汇......”。单击新建。将词汇表命名为适当的词汇,例如“SQL”。基于“基础通用 - 空口述”。当它询问您是否要扫描您的电子邮件或文档时,请单击取消。

导入单词

单击“单词|导入”。添加您创建的两个单词列表并导入它们。

适应写作风格

单击“工具|精度中心”。单击“将文档中的单词添加到词汇表”。使用默认设置,然后选择包含代码的文档。

尝试口述一些SQL

您可能想要指出的第一件事是选择陈述。请记住,SELECT是用于在NaturallySpeaking中开始选择文本的命令。因此,在口述之前你会想说“Cap”,所以NaturallySpeaking不会混淆。而已。好吧,至少足以让你入门。根据需要修改单词列表,发音和单词属性。您还可以采取其他措施来提高准确性和速度。正如我想到的那样,我将编辑这篇文章并在此处添加它们。

指令进入SQL Server Management Studio的提示

如果您指定SQL Server Management Studio,您可能会发现性能非常低。请尝试以下方法来缓解此问题:

  • 关闭所有工具栏(创建宏以访问常用功能)
  • 保持尽可能少的窗格和文档
  • 一次只打开一个数据库
  • 完成后隐藏搜索结果(Ctrl + R)
  • 如果一切都失败了,请关闭并重新打开管理工作室
  • 编辑窗口中的Display the tab stops可以更轻松地格式化SQL。

SQL Server 2000中的查询分析器没有这些问题。


4
投票

http://voicecode.io

我最近发布了VoiceCode,这是我为解决自己的RSI问题而创建的逐个语音解决方案。

我用它来编写Sublime Text和Xcode,以及一般的计算机用法。它适用于以任何语言编写代码,包括SQL。这个解决方案的优点在于所有命令都可以链接到“命令短语”中,因此您不必像在其他语音命令解决方案中那样在每个单独的命令之间暂停。

它内置支持所有标准变量名称格式(蛇形案例,驼峰案例等),内置命令用于键盘快捷键的每个排列(即command-shift-5,command-option-shift-T等) ,具有光标移动命令,app切换命令,窗口切换命令,符号组合命令,如“=>”,“||”,“> =”等,以及更多。另外,添加自己的自定义命令也非常容易。

© www.soinside.com 2019 - 2024. All rights reserved.