Puis-je écrire du SQL en utilisant la reconnaissance vocale?

j'ai mal au poignet quand je tape et je voudrais commencer à écrire des déclarations SQL, procédure stockée, et des vues en utilisant la reconnaissance vocale.

36
demandé sur Keith Walton 2008-12-08 21:15:38

2 réponses

Oui. SQL est bien adapté à la reconnaissance de la parole (aussi bien qu'un langage de programmation peut l'être, c'est-à-dire), étant donné son vocabulaire limité et sa structure en phrases. En plus de formater le SQL pour qu'il soit beau, je peux le dicter beaucoup plus rapidement que de taper. Dicter code n'est pas pour tout le monde, cependant. Cela peut être assez frustrant au début. Les gens qui essaient ceci et s'y tiennent seront probablement ceux qui n'ont pas d'autre choix.

J'utilise Dragon NaturallySpeaking 10 Professionnel. La version professionnelle a les outils nécessaires pour créer un vocabulaire personnalisé comme celui-ci. La Version 9 devrait aussi fonctionner. C'est cher, alors essayez de faire payer l'entreprise pour laquelle vous travaillez si possible. Obtenez un microphone Casque décent aussi. Celui qui vient avec NaturallySpeaking n'est pas assez bon (mais vous pouvez essayer afin de voir si cela fonctionne pour vous). KnowBrainer est un bon endroit pour les recommandations de microphones.

2009-01-05 mise à jour : j'ai ajouté des conseils ci-dessous spécifiques à dicter dans SQL Server Management Studio.

2012-01-04 mise à jour : je garde la trace de Microsoft WSR depuis un certain temps maintenant, en espérant que des outils seraient ajoutés pour créer facilement un Vocabulaire complètement personnalisé à partir de zéro comme je le fais dans ce tutoriel avec NaturallySpeaking. Malheureusement, il semble que cela ne peut être fait par le biais de l'API (SAPI). Je n'ai pas le temps d'écrire ce code, donc je vais continuer à utiliser NaturallySpeaking pour écrire du code jusqu'à ce que quelque chose de mieux arrive.

préparation

nettoyez les noms et les codes de votre base de données

Dicter " SELECT PT_17, PT_28, PT_29 FROM HIK.dbo.PATINFO " serait une douleur dans le cul, mais je suppose que ce serait possible. Vous auriez à mettre beaucoup de prononciations, puisque NaturallySpeaking N'aurait aucune idée comment " PT_17 " serait son. Cela serait préférable pour la dictée:

SELECT Patient.FirstName, Patient.MiddleName, Patient.LastName FROM Claim.dbo.Patient AS Patient WHERE Patient.LastName LIKE '%smith%'

je suis passé à mon vocabulaire TSQL pour dicter l'énoncé ci-dessus. Tout ce qui précède la déclaration LIKE est dit Tel qu'il apparaît. '%smith%' a été dicté comme"ouvert-simple-citation pour cent-signe sierra mike india tango hotel pour cent-signe fermé-simple-citation [PAUSE] composé-cela". L'utilisation d'alias de table cohérents et toujours des champs précédents avec eux aide à améliorer la précision, puisque NaturallySpeaking tient des statistiques sur la fréquence à laquelle un mot apparaît près d'un autre.

créer une liste de mots-clés SQL

mettez un mot sur chaque ligne. Vous pouvez éventuellement suivre un mot avec un antislash (\) et une prononciation. NaturallySpeaking utilise un petit dictionnaire de sauvegarde de mots pour déterminer la prononciation des mots que vous ajoutez à un vocabulaire, il n'a donc aucun problème à comprendre comment SELECT , FROM , et WHERE sont prononcé. Il peut parfois comprendre un mot composé, et il fait sa meilleure estimation pour quelque chose comme XACT_ABORT . Je fournirais des prononciations pour des cas comme ceux-ci. La base de données que vous utilisez déterminera quels mots la liste contient - vérifiez votre documentation pour une liste de mots-clés. Votre liste ressemblera à ça, mais elle sera plus longue.

SELECT
WHERE
FROM
XACT_ABORT\exact-abort
MAXDOP
NOLOCK\no-lock
LEN
RETURNS
CURSOR
MONEY    

ajouter également ces mots

\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

Gardez cette liste autour de vous, probablement le modifier plusieurs fois et recréer votre vocabulaire pour l'obtenir comme vous l'aimez.

créez une liste de mots de vos noms d'objets de base de données

C'est comme ça que je le fais dans 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

Copier et coller les résultats dans un fichier texte.

créer des prononciations pour les noms d'objets de votre base de données

utilisez le même format pour les prononciations que ci-dessus. Un la manière la plus simple de les créer est d'utiliser une fonction de recherche et de remplacement regex. Dans SQL Server Management Studio ou Visual Studio, le regex suivant (non standard) créera des prononciations pour deux noms de cas mixtes.

Find: ^{[A-Z][a-z]+}{[A-Z][a-z]+}$
Replace: "151940920"\-

examinez les prononciations et nettoyez tout ce qui ne semble pas juste. Pour les acronymes, ASP devient "A. S. P.'. Gardez cette liste, ainsi. Si vous décidez de faire des vocabulaires pour d'autres langages de programmation, vous aurez probablement inclure ces mots, si vous êtes un développeur de base de données.

créer un document texte qui contient tout votre code SQL (vues, procédures, etc.)

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]

Supprimer les commentaires et les chaînes littérales. Regex de recherche et de remplacement fonctionne bien pour cela.

Construisez votre vocabulaire

installez NaturallySpeaking et créez un nouvel utilisateur si vous ne l'avez pas déjà fait.

créer un nouveau vocabulaire

Cliquez sur "NaturallySpeaking | Gérer les Vocabulaires...". Cliquez Sur Nouveau. Nommez le vocabulaire quelque chose d'approprié, comme "SQL". Base sur "base générale-dictée vide". Quand il vous demande si vous voulez numériser votre e-mail ou vos documents, cliquez sur Annuler.

Importer des mots

Cliquez Sur"Words | Import". Ajoutez les deux listes de mots que vous avez créées et importez-les.

S'adapter à style d'écriture

Cliquez Sur "Tools / Accuracy Center". Cliquez sur "Ajouter des mots de vos documents au vocabulaire". Utilisez les paramètres par défaut, et sélectionnez le document que vous avez créé qui contient votre code.

essayez de dicter quelques SQL

la première chose que vous voudrez probablement dicter est une déclaration select. Gardez à l'esprit que SELECT est ce que vous utilisez pour commencer une commande dans NaturallySpeaking qui sélectionne du texte. De ce fait, vous aurez je veux dire " Cap " avant de le dicter pour que NaturallySpeaking ne soit pas confus. C'est tout. Eh bien, au moins assez pour vous obtenir a commencé. Modifiez vos listes de mots, prononciations et propriétés des mots au besoin. Il y a d'autres choses que vous pouvez faire pour augmenter la précision et la vitesse à laquelle vous pouvez dicter. Comme je pense à eux, je vais éditer ce post et de les ajouter ici.

conseils pour dicter dans SQL Server Management Studio

si vous dictez en SQL Server Management Studio, vous pouvez remarquer des performances très lentes. Essayez ce qui suit pour alléger cela:

  • désactiver toutes les barres d'outils (créer des macros pour accéder couramment utilisés la fonctionnalité)
  • garder aussi peu de vitres et documents ouverts dans la mesure du possible
  • garder une seule base de données ouverte à la fois
  • Masquer les résultats de la recherche après que vous avez terminé avec eux (Ctrl+R)
  • si tout le reste échouer, fermez et rouvrez la gestion studio
  • afficher l'onglet dans la fenêtre d'édition pour faciliter le formatage de votre SQL.

L'Analyseur de requête de SQL Server 2000 n'a pas ces problèmes.

71
répondu Keith Walton 2017-05-23 12:02:42

http://voicecode.io

j'ai récemment publié VoiceCode, une solution de codage par voix que j'ai créée pour résoudre mes propres problèmes RSI.

Je l'utilise pour le codage dans le texte Sublime et Xcode, ainsi que l'utilisation générale de l'ordinateur. Il fonctionne pour l'écriture de code dans n'importe quelle langue y compris SQL. La grande chose au sujet de cette solution est que toutes les commandes peuvent être enchaînées dans des "phrases de commande" de sorte que vous n'avez pas à faire une pause entre chaque commande individuelle, comme vous le faites avec d'autres commande vocale solutions.

il a la prise en charge intégrée pour tous les formats de nom de variable standard (snake case, camel case, etc), a des commandes intégrées pour chaque permutation de raccourcis clavier (ie commande-shift-5, Commande-option-shift-T, et ainsi de suite), a des commandes de déplacement de curseur, des commandes de commutation d'application, des commandes de commutation de fenêtre, des commandes pour des combinaisons de symboles comme "=>", "||", ">=", etc, and tons more. De Plus il est très facile d'ajouter vos propres des commandes personnalisées.

4
répondu Ben Meyer 2015-01-08 03:29:09