Могу ли я написать SQL с помощью распознавания речи?
Когда я печатаю, у меня болит запястье, и я хотел бы начать писать операторы SQL, хранимые процедуры и представления, используя распознавание речи.
2 ответа
Да. 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
становится `ASP '. Держите этот список, а также. Если вы решите сделать словари для других языков программирования, вы, вероятно, включите эти слова, если вы разработчик базы данных.
Создайте текстовый документ, содержащий весь ваш код 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]
Удалить комментарии и буквенные строки. Regex поиск и замена хорошо работает для этого.
Создайте свой словарный запас
Установите NaturallySpeaking и создайте нового пользователя, если вы этого еще не сделали.
Создать новый словарь
Нажмите "NaturallySpeaking | Управление словарями...". Нажмите Новый. Назовите словарь что-то подходящее, например, "SQL". Основывайтесь на "Базовом генерале - Пустой диктант". Когда вас спросят, хотите ли вы отсканировать вашу электронную почту или документы, нажмите "Отмена".
Импорт слов
Нажмите "Слова | Импорт". Добавьте два списка слов, которые вы создали, и импортируйте их.
Адаптироваться к стилю письма
Нажмите "Инструменты | Центр точности". Нажмите "Добавить слова из ваших документов в словарь". Используйте настройки по умолчанию и выберите созданный вами документ, содержащий ваш код.
Попробуйте диктовать некоторые SQL
Первое, что вы, вероятно, захотите продиктовать, - это оператор select. Помните, что SELECT - это то, что вы используете, чтобы начать команду в NaturallySpeaking, которая выделяет текст. Из-за этого вы захотите сказать "Кепка", прежде чем диктовать, чтобы NaturallySpeaking не запутался. Вот и все. Ну, по крайней мере, достаточно, чтобы вы начали. Измените ваши списки слов, произношения и свойства слов по мере необходимости. Есть и другие вещи, которые вы можете сделать, чтобы повысить точность и скорость, с которой вы можете диктовать. Как я думаю о них, я отредактирую этот пост и добавлю их сюда.
Советы по диктовке в SQL Server Management Studio
Если вы диктуете в SQL Server Management Studio, вы можете заметить очень низкую производительность. Попробуйте следующее, чтобы облегчить это:
- Отключите все панели инструментов (создайте макросы для доступа к часто используемым функциям)
- Держите как можно меньше открытых панелей и документов
- Держите только одну базу данных открытой одновременно
- Скрыть результаты поиска после того, как вы закончите с ними (Ctrl+R)
- Если ничего не помогает, закройте и снова откройте управляющую студию
- Отобразите вкладки в окне редактирования, чтобы упростить форматирование SQL.
Анализатор запросов из SQL Server 2000 не имеет этих проблем.
Недавно я выпустил VoiceCode, кодирующее голосовое решение, которое я создал для решения своих собственных проблем с RSI.
Я использую его для кодирования в Sublime Text и Xcode, а также для общего использования компьютера. Он работает для написания кода на любом языке, включая SQL. Самое замечательное в этом решении заключается в том, что все команды могут быть объединены в "командные фразы", поэтому вам не нужно делать паузу между каждой отдельной командой, как вы делаете это с другими решениями голосовых команд.
Он имеет встроенную поддержку всех стандартных форматов имен переменных (случай змеи, случай верблюда и т. Д.), Имеет встроенные команды для каждой перестановки сочетаний клавиш (т. Е. Command-shift-5, command-option-shift-T и т. Д.), имеет команды перемещения курсора, команды переключения приложений, команды переключения окон, команды для комбинаций символов, таких как "=>", "||", ">=" и т. д., и многое другое. Кроме того, очень легко добавлять свои собственные команды.