代码之家  ›  专栏  ›  技术社区  ›  Keith Walton

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

  •  36
  • Keith Walton  · 技术社区  · 17 年前

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

    2 回复  |  直到 17 年前
        1
  •  73
  •   Community Mohan Dere    9 年前

    我使用龙自然峰值10专业。专业版提供了创建这样的自定义词汇表所需的工具。版本9也应该可以正常工作。它很贵,所以如果可能的话,试着让你工作的公司为它买单。也要买一个像样的耳机麦克风。NaturallySpeaking附带的一个还不够好(但是你可能想先试试看它是否适合你)。 KnowBrainer 是推荐话筒的好地方。

    :我在下面添加了一些在SQL Server Management Studio中听写的技巧。

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

    准备

    清理数据库名称和代码

    口述” 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%'
    

    LIKE 这句话说得恰如其分。 '%smith%' 被指定为“开放单报价百分比标志sierra mike india tango酒店百分比标志封闭单报价[暂停]复合”。使用一致的表别名和始终在其前面的字段有助于提高准确性,因为自然峰值保留了一个单词与另一个单词相邻的频率的统计信息。

    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
    

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

    使用与上面列出的发音相同的格式。创建这些函数的一种简单方法是使用正则表达式搜索和替换函数。在SQLServerManagementStudio或VisualStudio中,以下(非标准)正则表达式将为两个单词混合大小写名称创建发音。

    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]
    

    删除注释和文字字符串。正则表达式搜索和替换对此很有效。

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

    创造一个新的词汇表

    输入词

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

    适应写作风格

    试着口述一些SQL语句

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

    向SQLServerManagementStudio口述的技巧

    • 关闭所有工具栏(创建宏 访问常用的
    • 保留尽可能少的窗格和 文件尽可能打开
    • 一次只打开一个数据库
    • 完成后隐藏搜索结果 使用它们(Ctrl+R)
    • Display the tab stops

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

        2
  •  5
  •   Ben Meyer    11 年前

    http://voicecode.io

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

    它内置了对所有标准变量名格式(蛇形、驼色等)的支持,为每一种键盘快捷键排列(即command-shift-5、command-option-shift-T等)都内置了命令,有光标移动命令、应用程序切换命令、窗口切换命令、符号组合命令,如“=>”、“| |”、“>”等等,还有更多。此外,添加自定义命令也非常容易。