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

当我input时我感到手腕疼痛,我想用语音识别开始编写SQL语句,存储过程和视图。

    是。 SQL非常适合于语音识别(因为它是有限的词汇和句子结构,所以它非常适合作为编程语言)。 除了格式化SQL,使其看起来不错,我可以比input更快地指示它。 听写代码并不适合每个人,但是。 一开始可能会相当令人沮丧。 试试这个并坚持下去的人可能是那些别无select的人。

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

    2009-01-05更新 :我已经在SQL Server Management Studio中添加了以下专用提示。

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

    制备

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

    口述“ SELECT PT_17, PT_28, PT_29 FROM HIK.dbo.PATINFO ”将是一个痛苦的屁股,但我想这是可能的。 你将不得不设置很多发音,因为NaturallySpeaking不知道“ PT_17PT_17 。 这对听写是比较好的:

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

    我切换到我的TSQL词汇来指定上述语句。 就像看起来一样,直到LIKE声明的所有内容都被说出来。 '%smith%'是口述为“开放式单引号百分号sierra mike india tango酒店百分比接近单引号[PAUSE]复合式”。 使用一致的表别名和始终使用前面的字段有助于提高准确性,因为NaturallySpeaking可以统计一个单词出现在另一个单词旁边的频率。

    创build一个SQL关键字的单词列表

    每行放一个字。 您可以select使用反斜杠(\)和发音。 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 

    保留这个清单,因为你可能会修改它几次,重新创build你的词汇,以达到你喜欢的方式。

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

    这是我在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 

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

    为您的数据库对象名称创build发音

    使用与上面列出的发音相同的格式。 一个简单的方法来创build这些是使用正则expression式search和replacefunction。 在SQL Server Management Studio或Visual Studio中,以下(非标准)正则expression式将为两个单词混合大小写名称创build发音。

     Find: ^{[AZ][az]+}{[AZ][az]+}$ Replace: \0\\\1-\2 

    审查发音和清理任何不正确的东西。 对于首字母缩写词, ASP变成“ASP”。 保持这个清单,以及。 如果您决定为其他编程语言制作词汇表,如果您是数据库开发人员,则可能会包含这些词汇。

    创build一个包含所有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] 

    删除注释和文字string。 正则expression式search和replace适用于此。

    build立你的词汇

    安装NaturallySpeaking并创build一个新的用户,如果你还没有。

    创build一个新的词汇

    点击“NaturallySpeaking | Manage Vocabularies …”。 点击新build。 命名适当的词汇表,如“SQL”。 根据“基地一般 – 空听写”。 当询问您是否要扫描您的电子邮件或文件时,请点击取消。

    导入单词

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

    适应写作风格

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

    尝试指定一些SQL

    你可能想指定的第一件事是一个select语句。 请记住,SELECT是用于在NaturallySpeaking中开始select文本的命令。 正因为如此,您在听写之前要说“Cap”,所以NaturallySpeaking不会感到困惑。 而已。 那么,至less可以让你开始。 根据需要修改您的单词列表,发音和单词属性。 还有其他的事情可以提高你的准确性和速度。 正如我想到的那样,我将编辑这篇文章并在这里添加它们。

    SQL Serverpipe理工作室的口授技巧

    如果您指定到SQL Server Management Studio中,您可能会注意到性能非常低下。 尝试以下来减轻这一点:

    • closures所有工具栏(创buildmacros以访问常用function)
    • 保持尽可能less的窗格和文档
    • 一次只打开一个数据库
    • 完成后隐藏search结果(Ctrl + R)
    • 如果一切都失败了,closures并重新打开pipe理工作室
    • 在编辑窗口中显示制表位 ,以便更容易地格式化您的SQL。

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

    http://voicecode.io

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

    我使用它在Sublime Text和Xcode中进行编码,以及一般的计算机使用。 它适用于使用任何语言(包括SQL)编写代码。 这个解决scheme的伟大之处在于,所有的命令都可以链接成“命令短语”,所以你不必在每一个单独的命令之间停下来,就像你使用其他语音命令解决scheme一样。

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