Могу ли я писать SQL, используя распознавание речи?

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

Ответ 1

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

Я использую Dragon NaturallySpeaking 10 Professional. В версии 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 percent-sign close-single-quote [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". Настройте его на "Base General - Empty Dictation". Когда он спросит вас, хотите ли вы отсканировать свой адрес электронной почты или документы, нажмите "Отмена".

Импортировать слова

Нажмите "Words | Import". Добавьте два списка слов, которые вы создали, и импортируете их.

Адаптация к стилю письма

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

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

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

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

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

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

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

Ответ 2

http://voicecode.io

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

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

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