gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 03:35:52 25 4
gpt4 key购买 nike

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

最佳答案

是的。 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 india tango hotel 百分号关闭单引号 [PAUSE] 复合那”。使用一致的表别名并始终将字段放在前面有助于提高准确性,因为 NaturallySpeaking 会统计一个词在另一个词附近出现的频率。

创建 SQL 关键字的单词列表

每行放一个词。您可以选择在单词后使用反斜杠 (\) 和发音。 NaturallySpeaking 使用一个小的备用单词词典来确定您添加到词汇表中的单词的发音,因此弄清楚如何 SELECT 没有问题。 , FROM , 和 WHERE发音。有时它可以找出一个复合词,并且对诸如 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.”。也保留这个 list 。如果您决定为其他编程语言编写词汇表,并且您是一名数据库开发人员,那么您可能会包含这些词。

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

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 | 管理词汇...”。单击新建。将词汇命名为适当的名称,例如“SQL”。它基于“基本通用 - 空听写”。当它询问您是否要扫描电子邮件或文档时,单击取消。

导入词

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

适应写作风格

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

尝试听写一些 SQL

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

听写 SQL Server Management Studio 的提示

如果您在 SQL Server Management Studio 中听写,您可能会注意到性能非常低。尝试以下方法来缓解这种情况:
  • 关闭所有工具栏(创建宏
    访问常用的
    功能)
  • 保持尽可能少的 Pane 和
    尽可能打开文档
  • 一次只打开一个数据库
  • 完成后隐藏搜索结果
    与他们 (Ctrl+R)
  • 如果其他一切
    失败,关闭并重新打开管理
    工作室
  • Display the tab stops在编辑窗口中,以便更轻松地格式化您的 SQL。

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

    关于sql - 我可以使用语音识别编写 SQL 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/350348/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com