sql speech-recognition ergonomics naturallyspeaking code-by-voice

¿Puedo escribir SQL usando el reconocimiento de voz?



speech-recognition ergonomics (2)

http://voicecode.io

Recientemente lancé VoiceCode, una solución de codificación por voz que creé para resolver mis propios problemas de RSI.

Lo uso para codificar en Sublime Text y Xcode, así como el uso general de la computadora. Funciona para escribir código en cualquier idioma, incluido SQL. Lo bueno de esta solución es que todos los comandos se pueden encadenar en "frases de comando" para que no tenga que pausar entre cada comando individual como lo hace con otras soluciones de comando de voz.

Tiene soporte integrado para todos los formatos estándar de nombres variables (snake case, camel case, etc.), tiene comandos integrados para cada permutación de atajos de teclado (es decir, command-shift-5, command-option-shift-T, etc.) , tiene comandos de movimiento de cursor, comandos de cambio de aplicación, comandos de cambio de ventana, comandos para combos de símbolos como "=>", "||", "> =", etc., y toneladas más. Además, es muy fácil agregar sus propios comandos personalizados también.

Cuando escribo me duele la muñeca y me gustaría comenzar a escribir declaraciones SQL, procedimientos almacenados y vistas utilizando el reconocimiento de voz.


Sí. SQL es muy adecuado para el reconocimiento de voz (tan adecuado como puede ser un lenguaje de programación), dado su vocabulario limitado y estructura similar a una oración. Además de formatear el SQL para que se vea bien, puedo dictarlo mucho más rápido que escribiendo. Sin embargo, el código dictado no es para todos. Puede ser bastante frustrante al principio. Las personas que prueben esto y se apeguen a él probablemente serán aquellos que no tienen otra opción.

Yo uso Dragon NaturallySpeaking 10 Professional. La versión Profesional tiene las herramientas necesarias para crear un vocabulario personalizado como este. La versión 9 debería funcionar bien, también. Es caro, así que trate de que la empresa para la que trabaja lo pague, si es posible. Obtenga un micrófono de auriculares decente también. El que viene con NaturallySpeaking no es lo suficientemente bueno (pero es posible que desee probarlo primero para ver si funciona para usted). KnowBrainer es un buen lugar para recomendaciones de micrófonos.

Actualización del 2009-01-05 : He añadido sugerencias a continuación específicas para dictar en SQL Server Management Studio.

Actualización del 04/01/2012 : He estado siguiendo el WSR de Microsoft desde hace bastante tiempo, con la esperanza de que se agreguen herramientas para crear fácilmente un vocabulario totalmente personalizado desde cero, como hago en este tutorial con NaturallySpeaking. Desafortunadamente, parece que esto solo puede hacerse a través de la API (SAPI). No tengo tiempo para escribir ese código, así que continuaré usando NaturallySpeaking para escribir código hasta que surja algo mejor.

Preparación

Limpia los nombres y el código de tu base de datos

Dictar " SELECT PT_17, PT_28, PT_29 FROM HIK.dbo.PATINFO " sería un dolor en el trasero, pero supongo que sería posible. Tendría que establecer muchas pronunciaciones, ya que NaturallySpeaking no tendría idea de cómo PT_17 " PT_17 ". Esto sería preferible para el dictado:

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

Cambié a mi vocabulario TSQL para dictar la declaración anterior. Todo hasta la declaración LIKE se pronuncia tal como aparece. ''%smith%'' se dictó como "signo de porcentaje de comillas simples abiertas sierra mike india tango hotel porcentaje-signo cierre-único-cita [PAUSE] compuesto-eso". El uso de alias de tablas consistentes y los campos que siempre preceden con ellos ayuda a mejorar la precisión, ya que NaturallySpeaking mantiene estadísticas de la frecuencia con la que una palabra aparece cerca de otra.

Crear una lista de palabras clave SQL

Pon una palabra en cada línea. Opcionalmente puede seguir una palabra con una barra invertida (/) y una pronunciación. NaturallySpeaking utiliza un pequeño diccionario de palabras de respaldo para determinar la pronunciación de las palabras que agrega a un vocabulario, por lo que no tiene problemas para determinar cómo se pronuncian SELECT , FROM y WHERE . A veces puede encontrar una palabra compuesta, y hace su mejor suposición para algo como XACT_ABORT . Proporcionaría pronunciaciones para casos como estos. La base de datos que use determinará qué palabras contiene la lista: consulte su documentación para obtener una lista de palabras clave. Tu lista se verá más o menos así, pero será mucho más larga.

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

También agregue estas palabras

/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

Mantenga esta lista, ya que probablemente la modifique varias veces y recree su vocabulario para obtenerlo de la manera que le guste.

Crea una lista de palabras de los nombres de tus objetos de base de datos

Así es como lo hago en 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

Copie y pegue los resultados en un archivo de texto.

Crea pronunciaciones para tus nombres de objetos de base de datos

Use el mismo formato para las pronunciaciones que se enumeran arriba. Una forma fácil de crear esto es usar una función de búsqueda y reemplazo de expresiones regulares. En SQL Server Management Studio o Visual Studio, la siguiente expresión regular (no estándar) creará pronunciaciones para nombres de casos mixtos de dos palabras.

Find: ^{[A-Z][a-z]+}{[A-Z][a-z]+}$ Replace: /0///1-/2

Revisa las pronunciaciones y limpia todo lo que no se vea bien. Para los acrónimos, ASP convierte en `ASP ''. Mantenga esta lista, también. Si decide crear vocabularios para otros lenguajes de programación, probablemente incluya estas palabras si es un desarrollador de bases de datos.

Cree un documento de texto que contenga todo su código SQL (vistas, procedimientos, etc.)

Servidor SQL:

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]

Eliminar comentarios y cadenas literales La búsqueda y reemplazo Regex funciona bien para esto.

Desarrolla tu vocabulario

Instale NaturallySpeaking y cree un nuevo usuario si aún no lo ha hecho.

Crea un nuevo vocabulario

Haga clic en "NaturallySpeaking | Gestionar vocabularios ...". Haga clic en Nuevo. Nombra el vocabulario como apropiado, como "SQL". Base en "Base general - Dictado vacío". Cuando le pregunte si desea escanear su correo electrónico o documentos, haga clic en cancelar.

Importar palabras

Haga clic en "Palabras | Importar". Agregue las dos listas de palabras que creó e impórtelos.

Adaptarse al estilo de escritura

Haga clic en "Herramientas | Centro de precisión". Haga clic en "Agregar palabras de sus documentos al vocabulario". Use la configuración predeterminada y seleccione el documento que creó que contiene su código.

Intenta dictar algunos SQL

Lo primero que probablemente quiera dictar es una declaración de selección. Tenga en cuenta que SELECT es lo que usa para comenzar un comando en NaturallySpeaking que selecciona texto. Debido a esto, querrá decir "Cap" antes de dictarlo para que NaturallySpeaking no se confunda. Eso es. Bueno, al menos lo suficiente como para comenzar. Modifique sus listas de palabras, pronunciaciones y propiedades de palabras según sea necesario. Hay otras cosas que puede hacer para aumentar la precisión y la velocidad a la que puede dictar. Cuando pienso en ellos, editaré esta publicación y los agregaré aquí.

Consejos para dictar en SQL Server Management Studio

Si dicta en SQL Server Management Studio, puede observar un rendimiento muy lento. Intenta lo siguiente para aliviar esto:

  • Desactivar todas las barras de herramientas (crear macros para acceder a la funcionalidad comúnmente utilizada)
  • Mantenga la menor cantidad posible de paneles y documentos abiertos
  • Mantenga solo una base de datos abierta a la vez
  • Ocultar resultados de búsqueda una vez que haya terminado con ellos (Ctrl + R)
  • Si todo lo demás falla, cierre y vuelva a abrir Management Studio
  • Mostrar la pestaña se detiene en la ventana de edición para facilitar el formateo de su SQL.

El Analizador de consultas de SQL Server 2000 no tiene estos problemas.