Могу ли я написать SQL с помощью распознавания речи? - PullRequest
36 голосов
/ 08 декабря 2008

У меня возникает боль в запястье при наборе текста, и я хотел бы начать писать операторы SQL, хранимые процедуры и представления с использованием распознавания речи.

Ответы [ 2 ]

71 голосов
/ 08 декабря 2008

Да. SQL хорошо подходит для распознавания речи (так же, как и язык программирования), учитывая ограниченный словарный запас и структуру, подобную предложению. Помимо форматирования SQL, чтобы он выглядел хорошо, я могу диктовать его намного быстрее, чем печатать. Диктующий код не для всех, как бы то ни было. Это может быть довольно сложно в начале. Люди, которые пробуют это и придерживаются этого, вероятно, будут теми, у кого нет другого выбора.

Я использую Dragon NaturallySpeaking 10 Professional. Профессиональная версия имеет инструменты, необходимые для создания подобного словаря. Версия 9 также должна работать нормально. Это дорого, поэтому постарайтесь найти компанию, в которой вы работаете, чтобы платить за нее, если это возможно. Получите приличный микрофон гарнитуры также. Тот, который поставляется с NaturallySpeaking, недостаточно хорош (но вы можете попробовать его в первую очередь, чтобы увидеть, работает ли он для вас). KnowBrainer - хорошее место для рекомендаций по микрофону.

2009-01-05 Обновление : я добавил ниже советы, специфичные для диктовки в SQL Server Management Studio.

2012-01-04 Обновление : я уже давно слежу за WSR от Microsoft, надеясь, что будут добавлены инструменты для простого создания полностью пользовательского словаря с нуля, как я делаю в этом учебник с 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%' было продиктовано как «открытый знак с одинарной кавычкой, знак процента сьерра-майк, индийский танго, знак с закрытой одинарной кавычкой [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.». Держите этот список, а также. Если вы решите создавать словари для других языков программирования, вы, вероятно, включите эти слова, если вы разработчик базы данных.

Создайте текстовый документ, содержащий весь ваш код 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 и создайте нового пользователя, если вы этого еще не сделали.

Создать новый словарь

Нажмите «NaturallySpeaking | Управление словарями ...». Нажмите Новый. Назовите словарь что-то подходящее, например, «SQL». Основывайтесь на «Базовом генерале - пустой диктовке». Когда вас спросят, хотите ли вы отсканировать вашу электронную почту или документы, нажмите «Отмена».

Импорт слов

Нажмите «Слова | Импорт». Добавьте два списка слов, которые вы создали, и импортируйте их.

Приспосабливаться к стилю письма

Нажмите «Инструменты | Центр точности». Нажмите «Добавить слова из ваших документов в словарь». Используйте настройки по умолчанию и выберите созданный вами документ, содержащий ваш код.

Попробуйте продиктовать SQL

Первое, что вы, вероятно, захотите продиктовать, - это оператор select. Имейте в виду, что SELECT - это то, что вы используете, чтобы начать команду в NaturallySpeaking, которая выделяет текст. Из-за этого вы захотите сказать «Кепка», прежде чем диктовать это, чтобы NaturallySpeaking не запутался. Вот и все. Ну, по крайней мере, достаточно, чтобы вы начали. Измените свои списки слов, произношения и свойства слов по мере необходимости. Есть и другие вещи, которые вы можете сделать, чтобы повысить точность и скорость, с которой вы можете диктовать. Как я думаю о них, я отредактирую этот пост и добавлю их сюда.

Советы по диктовке в SQL Server Management Studio

Если вы продиктуете SQL Server Management Studio, вы можете заметить очень низкую производительность. Попробуйте сделать следующее:

  • Отключить все панели инструментов (создать макросы чтобы получить доступ к часто используемым функциональность)
  • Держите как можно меньше панелей и документы открываются по возможности
  • Оставлять открытой только одну базу данных одновременно
  • Скрыть результаты поиска после того, как вы закончите с ними (Ctrl + R)
  • Если все остальное не удается, закройте и снова откройте управление студия
  • Отображение табуляции в окне редактирования, чтобы упростить форматирование SQL.

Анализатор запросов из SQL Server 2000 не имеет этих проблем.

4 голосов
/ 08 января 2015

http://voicecode.io

Недавно я выпустил VoiceCode, решение для кодирования по голосу, которое я создал для решения своих собственных проблем с RSI.

Я использую его для кодирования в Sublime Text и Xcode, а также для общего использования компьютера. Он работает для написания кода на любом языке, включая SQL. Самое замечательное в этом решении заключается в том, что все команды могут быть объединены в «командные фразы», ​​поэтому вам не нужно делать паузу между каждой отдельной командой, как вы делаете это с другими решениями голосовых команд.

Он имеет встроенную поддержку всех стандартных форматов имен переменных (случай змеи, случай верблюда и т. Д.), Имеет встроенные команды для каждой перестановки сочетаний клавиш (например, command-shift-5, command-option-shift-T и и так далее), имеет команды перемещения курсора, команды переключения приложений, команды переключения окон, команды для комбинаций символов, таких как "=>", "||", "> =" и т. д., и многое другое. Кроме того, очень легко добавлять свои собственные команды.

...