我可以使用语音识别来编写SQL吗? [英] Can I write SQL using speech recognition?

查看:13
本文介绍了我可以使用语音识别来编写SQL吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

推荐答案

是。SQL非常适合语音识别(就像编程语言一样),因为它的词汇量和类似句子的结构都很有限。除了格式化SQL以使其看起来更美观之外,我口述它的速度比打字快得多。然而,口述代码并不适合每个人。一开始可能会非常令人沮丧。尝试并坚持这样做的人很可能是那些别无选择的人。

我使用的是Dragon NaturalySpeating 10专业版。专业版拥有创建这样的定制词汇表所需的工具。版本9也应该运行得很好。它很贵,所以如果可能的话,试着让你工作的公司付钱。还可以买一个像样的耳机麦克风。NaturallySpeating自带的功能还不够好(但你可能想先试一试,看看它是否适合你)。KnowBrainer是推荐麦克风的好地方。

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

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

准备

清理数据库名称和代码

口述"SELECT PT_17, PT_28, PT_29 FROM HIK.dbo.PATINFO"将是一件令人头疼的事情,但我想这是可能的。你必须设置很多发音,因为自然地讲不出"PT_17"的发音。这将是听写的首选:

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

我切换到我的TSQL词汇表来口述上述语句。LIKE语句之前的所有内容都是按显示的方式进行的。'%smith%'口述为"打开-单引号百分比-签署西拉迈克印度探戈酒店百分比-签署关闭-单引号[暂停]复合-那个"。使用一致的表别名和始终位于表别名前的字段有助于提高准确性,因为NaturallySpeking会记录一个单词靠近另一个单词出现的频率。

创建SQL关键字的单词列表

每行加一个词。您可以选择在单词后面加上反斜杠()和发音。自然地,Speating使用一个小的单词备份词典来确定您添加到词汇表中的单词的发音,因此它可以毫不费力地找出SELECTFROMWHERE的发音方式。它有时可以猜出一个复合词,并对XACT_ABORT之类的东西做出最好的猜测。我会为这样的情况提供发音。您使用的数据库将确定列表中包含哪些单词--请查看您的文档中的关键字列表。你的清单看起来会像这样,但要长得多。

SELECT
WHERE
FROM
XACT_ABORTexact-abort
MAXDOP
NOLOCK
o-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
	ab-key
aalpha
bravo
ccharlie
ddelta
eecho
ffoxtrot
ggolf
hhotel
iindia
jjuliet
kkilo
llima
mmike
n
ovember
ooscar
ppapa
qquebec
r
omeo
ssierra
t	ango
uuniform
vvictor
wwhiskey
xxray
yyankee
zzulu
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: \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]

删除注释和文字字符串。正则表达式搜索和替换可以很好地解决此问题。

扩大词汇量

安装NaturallySpeating并创建新用户(如果尚未安装)。

创建新词汇

点击"自然说话|管理词汇表..."。单击New(新建)。给词汇表起个合适的名字,比如"SQL"。以"基础通用--空听写"为基础。当系统询问您是否要扫描电子邮件或文档时,请单击"取消"。

导入单词

单击"Words|导入"。添加您创建的两个单词列表并将其导入。

适应写作风格

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

尝试口述一些SQL

您可能想要口述的第一件事是SELECT语句。请记住,在NaturallySpeating中,SELECT是用来开始选择文本的命令。正因为如此,在口述之前,你会想要说"Cap",这样自然就不会把说话搞糊涂了。就这样。好吧,至少足够让你开始了。根据需要修改单词列表、发音和单词属性。你还可以做其他的事情来提高你口述的准确性和速度。考虑到它们,我将编辑此帖子并将它们添加到此处。

口述到SQL Server Management Studio的提示

如果您口述到SQL Server Management Studio,您可能会注意到性能非常慢。尝试以下方法来缓解此问题:

    关闭所有工具栏(创建宏 要访问常用的 功能)
  • 保留尽可能少的窗格和 尽可能打开文档
  • 一次只打开一个数据库
  • 完成后隐藏搜索结果 使用它们(Ctrl+R)
  • 如果其他都是 失败、关闭并重新打开管理 演播室
  • Display the tab stops,以便更轻松地格式化您的SQL。

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

这篇关于我可以使用语音识别来编写SQL吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆