37

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

4

2 回答 2

72

是的。SQL 非常适合语音识别(就像编程语言一样非常适合,也就是说),因为它的词汇量有限且结构类似句子。除了格式化 SQL 使其看起来不错之外,我可以比打字快得多。然而,口授代码并不适合所有人。一开始可能会非常令人沮丧。尝试并坚持下去的人可能是那些别无选择的人。

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

2009-01-05 更新:我在下面添加了特定于在 SQL Server Management Studio 中听写的提示。

2012-01-04 更新:我一直在跟踪 Microsoft 的 WSR 很长一段时间,希望可以添加工具来轻松地从头开始创建一个完全自定义的词汇表,就像我在本教程中使用 NaturallySpeaking 所做的那样。不幸的是,这似乎只能通过 API (SAPI) 来完成。我没有时间写那个代码,所以我会继续使用 NaturallySpeaking 来写代码,直到出现更好的代码。

准备

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

口述“ 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变为“ASP”。保留此列表。如果您决定为其他编程语言制作词汇表,如果您是数据库开发人员,您可能会包含这些词。

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

SQL 服务器:

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]

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

建立你的词汇量

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

创建一个新词汇

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

导入单词

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

适应写作风格

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

尝试听写一些 SQL

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

听写 SQL Server Management Studio 的提示

如果您指示进入 SQL Server Management Studio,您可能会注意到性能非常缓慢。尝试以下方法来缓解这种情况:

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

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

于 2008-12-08T18:15:48.057 回答
5

http://voicecode.io

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

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

它内置支持所有标准变量名格式(snake case、camel case 等),内置命令用于键盘快捷键的每个排列(即 command-shift-5、command-option-shift-T 等) , 具有光标移动命令、应用程序切换命令、窗口切换命令、符号组合命令,如“=>”、“||”、“>=”等,等等。此外,添加您自己的自定义命令也非常容易。

于 2015-01-08T03:29:09.873 回答