El complemento Dictation Bridge llega, tras dos largos años de desarrollo y una exitosa campaña de financiación, a su versión 1.0. Dictation Bridge permite trabajar con programas de reconocimiento de voz, tales como Dragon Naturally Speaking o el que hay incorporado en Windows, mientras se utiliza un lector de pantalla. En otras palabras, ¡podrás dictarle al ordenador! El complemento se ha publicado para varios lectores de pantalla, entre ellos NVDA. Para obtener más información, visita el siguiente enlace:
Información y descarga de Dictation Bridge
Por el momento, la documentación completa de este complemento sólo se encuentra disponible en inglés. Iremos traduciéndola poco a poco.
Si ya tenías la versión 1.0 rc1, se recomienda actualizar a esta nueva versión, ya que con ella te beneficiarás de las últimas mejoras de seguridad y estabilidad y garantizarás que el funcionamiento de tu copia de NVDA es óptimo.
¡A dictar se ha dicho!
Autor: José Manuel Delicado Alcolea
Actualización de complemento: Windows 10 App Essentials 18.03.1
El complemento Windows 10 App Essentials, que no debería faltar en tu copia de NVDA si usas Windows 10, se actualiza a la versión 18.03.1. En esta actualización se corrige un problema que hacía que NVDA repitiera dos veces el mismo mensaje al utilizar la calculadora.
Como siempre, te recordamos la importancia de mantener tus complementos al día para que tu experiencia sea óptima y NVDA se beneficie de las últimas mejoras en estabilidad y seguridad. Windows 10 App Essentials puede actualizarse automáticamente, pero también puedes descargarlo de aquí.
Más información y descarga de Windows 10 App Essentials
Si te gusta nuestra web y la información que te hacemos llegar, plantéate echarnos una mano haciendo una donación. Esta web no podría existir sin tu ayuda.
¡Feliz viernes!
Actualización de complemento: Weather Plus 4.7 – 25.02.2018
El complemento Weather Plus, que permite consultar la información meteorológica de la zona que elijamos con unos sencillos atajos de teclado, se actualiza a la versión 4.7 del 25 de febrero. En esta versión se ha solucionado un pequeño error con la codificación de texto en la función removeupdate.
Se recomienda a todos los usuarios de este complemento actualizarlo a la última versión para disfrutar de una experiencia óptima con NVDA, y beneficiarse de las últimas mejoras en seguridad y estabilidad. Weather Plus puede actualizarse automáticamente, pero si lo deseas, puedes descargarlo de aquí:
Más información y descarga de Weather Plus
En el anuncio que ha hecho su autor en la comunidad internacional, se nos recuerda la importancia de que el archivo descargado tenga extensión .nvda-addon. Algunos navegadores, como Internet Explorer, cambian la extensión a .zip tras la descarga. En estos casos hay que renombrar el archivo.
¡Feliz domingo!
Actualización de complementos: Emule 3.9, Place Markers 8.5 y Read Feeds 4.1
Los complementos Emule, Place Markers y Read Feeds, creados por Noelia Ruiz Martínez, se actualizan con mejoras en las traducciones. Si actualmente tienes alguno de ellos y notas que algún mensaje no aparece en tu idioma, tal vez al actualizar se solucione el problema.
Más información y descarga del complemento para Emule
Más información y descarga de Place Markers
Más información y descarga de Read Feeds
Recuerda mantener tus complementos actualizados para disfrutar de una experiencia de usuario mejor.
Actualización de complemento: Golden Cursor 2.2
El complemento Golden Cursor, que permite desplazar el ratón utilizando órdenes de teclado y guardar y restaurar su posición en aplicaciones concretas, se actualiza a la versión 2.2. Esta actualización no incluye cambios en el código, tan sólo mejoras en las traducciones.
Más información y descarga de Golden Cursor
Como siempre, te recordamos la importancia de mantener tus complementos al día para que tu copia de NVDA sea estable y segura.
Si te gusta nuestra web y quieres contribuir, haz una donación. ¡Te lo agradeceremos!
¡Feliz viernes!
El complemento para VitalSource Bookshelf se integra en el núcleo de NVDA
Hola a todos.
Esta mañana, en la lista internacional de complementos para NVDA, Noelia Ruiz ha comunicado que el complemento para VitalSource Bookshelf se ha integrado en el código fuente de NVDA. Específicamente, se ha añadido el módulo para dar soporte a esta aplicación en la rama master, compilación 14813,7f130241. Si utilizas las versiones de desarrollo de NVDA del canal master y lo has actualizado hoy, puedes desinstalar este complemento.
Cuando se libere la versión final de NVDA 2018.1, el complemento será eliminado tanto del sitio web oficial de complementos como de nuestra web.
Si no conoces VitalSource Bookshelf, se trata de un lector de libros en formato EPUB muy potente y accesible. Puedes saber más sobre él y descargarlo aquí.
Aprovechamos esta entrada para anunciaros la actualización del complemento para Audacity, que actualmente se encuentra en la versión 3.1. Como no es oficial, nos ha costado muchísimo más detectar que se había actualizado. Gracias a todos aquellos que nos han informado de que su enlace de descarga no funcionaba.
Calibre
- Autor: Javi Domínguez
- Versión actual: 2024.1.1 estable, 2024.0.1 en desarrollo
- Ver este complemento en la web de la comunidad
- Descargar versión estable
- Descargar versión de desarrollo
Un complemento de NVDA con algunas mejoras de accesibilidad para el gestor de libros electrónicos Calibre
- F10 lleva el foco a la barra de herramientas. Allí puedes navegar con las teclas estándar (tabulador y flechas); intro para activar un elemento y la tecla aplicaciones para mostrar el menú de contexto; escape para salir de la barra de herramientas.
- F12 busca el libro actual en Google
- NVDA+alt+fin verbaliza el total de libros en la vista de la biblioteca actual y la cantidad de libros seleccionados
- NVDA+control+h abre el menú de contexto con los ajustes de la columna actual
- La I en la vista de la biblioteca lee la información del libro.
Se pueden personalizar los atajos en las preferencias de NVDA > Gestos de entrada cuando Calibre está abierto. Además, en las preferencias se puede definir la manera que usa NVDA para leer las cabeceras de tabla en la biblioteca (filas y columnas, sólo columnas o nada)
Echa un vistazo a la documentación de Calibre para conocer más atajos de teclado.
Cubierto por la GNU General Public License. Mira el fichero copying.txt para más detalles.
Buenas noticias para usuarios de NVDA y Firefox: la crisis llega a su fin
¡Hola a todos!
Hace un tiempo os hablábamos de Firefox 57, y la novedad que introducía: el multiproceso. Este cambio dejaba fuera de juego a algunos lectores de pantalla y reducía considerablemente el rendimiento de NVDA al navegar por la web. Plenamente conscientes de ello, los miembros del equipo de desarrollo de Mozilla se pusieron a trabajar duro para solucionar estos problemas cuanto antes, y lo han conseguido. Y no sólo eso: planeaban arreglar todos los problemas para la versión 59, ¡y la mayoría de ellos ya están solucionados en la 58!
Desde aquí nosotros hemos sido testigos de todas estas mejoras, usando en todo momento Firefox beta. Ahora que ya ha pasado la tormenta, tocará volver al canal release.
¿Qué ha cambiado en Firefox 58?
Como se explica en este artículo en inglés, Firefox 58 mejora considerablemente la carga de páginas para usuarios de NVDA. En muchas de ellas ya no se escuchará el mensaje «Cargando documento…», aunque en aquellas grandes o que contengan mucho texto formateado (tablas, listas, etc.) NVDA seguirá teniendo un leve retraso. Si estáis actualmente con Firefox 52 ESR, os recomendamos instalar la versión 58 y darle una oportunidad.
Por otro lado, NVAccess también está tomando medidas. La versión 2018.1 de NVDA, prevista para febrero, llevará características nuevas que le permitirán integrarse mucho mejor con Firefox y cargar más deprisa los documentos virtuales. El objetivo es que la experiencia «Quantum» llegue a todos los usuarios. Aquellos que tengáis las versiones master o next de NVDA ya podéis probar estas mejoras.
Se espera que en la versión 59 Firefox haya solucionado muchos más fallos, y que tenga un rendimiento muy parecido ya al de Firefox 56, o incluso mejor. Y por supuesto, las actualizaciones de Firefox 58 (58.0.x) seguirán corrigiendo errores.
Para usuarios de Jaws
Aunque esta es una web dedicada exclusivamente a NVDA, sois muchos los que todavía usáis el lector de pantalla Jaws for Windows, y no vamos a olvidarnos de vosotros. Desgraciadamente, aquí las noticias no son tan buenas. La versión 58 de Firefox carga un poco más deprisa, pero sigue funcionando terriblemente despacio por la forma que tiene Jaws de interactuar con el navegador. Si seguís utilizando Jaws, es recomendable permanecer con la versión ESR o utilizar otro navegador.
Actualización de complemento: Clip Contents Designer 6.3
El complemento Clip Contents Designer, que permite copiar texto al portapapeles sin sobreescribir el que hubiera previamente, se actualiza a la versión 6.3. Esta versión sólo incluye traducciones actualizadas, no hay otras mejoras destacables.
Más información y descarga de Clip Contents Designer
Para garantizar una experiencia de usuario óptima, te recomendamos mantener tus complementos al día, siempre actualizados a sus últimas versiones. De esta manera NVDA será siempre estable y seguro.
La comunidad de NVDA en español no podría existir sin tu ayuda. Si lo deseas, puedes hacer una donación para que podamos continuar creciendo y llegando cada vez más lejos.
Uso de expresiones regulares en los diccionarios del habla
Nota: Esta guía fue publicada en el año 2015 en la antigua web de NVDA en español. La versión que se ofrece a continuación ha sido actualizada solucionando errores producidos por la conversión entre lenguajes de marcado, eliminando algunos fallos ortográficos y gramaticales del autor y cambiando la referencia al apartado de la guía de usuario que habla de los diccionarios. Si detectas algún error, déjanos un comentario más abajo.
Como se explica en la sección 11.1.14 de Diccionarios del Habla en la Guía de Usuario, gracias a la creación o modificación de los diccionarios NVDA permite personalizar la forma en que el sintetizador lee ciertas palabras, símbolos o dígitos.
En esta pequeña guía vamos a ver como utilizar Expresiones regulares en los diccionarios del habla del lector de pantalla NVDA, ya que en la guía de usuario no se explican con detalle.
A continuación se muestra una breve introducción a las expresiones regulares, seguida de una lista de caracteres y secuencias especiales. No trates de memorizar estas listas, por ahora solo debes tener en cuenta que cada carácter y secuencia especial tiene su propio significado y función.
Con los ejemplos aprenderás a entender el funcionamiento y a crear tu propio diccionario con expresiones regulares.
¿Estás listo? ¡Vamos!
Expresiones regulares: conceptos básicos
En esta sección se presentan conceptos de expresiones regulares, y se explica cómo se crean y se utilizan en los diccionarios de voz de NVDA.
Una expresión regular, llamada también regex, es una secuencia de caracteres que forma un patrón de búsqueda, principalmente utilizada para la búsqueda de cadenas de caracteres y operaciones de sustitución.
Específicamente, NVDA va a aplicar Expresiones regulares para reemplazar patrones cada vez que se encuentre una coincidencia en la lectura.
Podemos decir que es una operación de sustitución cuando el texto escrito se reemplaza antes de ser procesado por el sintetizador de voz.
Las expresiones regulares pueden contener caracteres ordinarios y caracteres especiales.
Los caracteres ordinarios son las letras de la a a la z, los números, el signo subrayado y otros signos de puntuación que no están incluidos en los caracteres especiales.
La mayoría de los caracteres ordinarios, como «a A b 9 0», son las expresiones regulares más simples, simplemente coinciden consigo mismos.
Por ejemplo, se pueden concatenar caracteres ordinarios así:
la expresión «Odissea2001» coincide con «Odissea2001».
Caracteres Especiales
Lista completa de caracteres especiales y su comportamiento en el contexto de las expresiones regulares:
- «\». Marca el siguiente caracter como un caracter especial, un literal, una referencia inversa. Por ejemplo, «r» coincide con el caracter «r», mientras que «\r» coincide con un caracter de retorno de carro. Cuando precede a caracteres que normalmente se tratan de forma especial, indica que el siguiente caracter no es especial y debe ser interpretado literalmente. Por ejemplo, la secuencia \» coincide con » y ( coincide con (.
- «.». Coincide con cualquier caracter excepto con «\n».
- «^». Coincide con la posición al principio de la cadena de entrada. La propiedad Multiline está establecida para coincidir también con la siguiente posición después de «\n» o «\r». Es decir, este caracter corresponde también a la posición inmediatamente después de una nueva línea o un retorno de carro.
- «$». Coincide con la posición al final de la cadena de entrada. La propiedad Multiline está establecida para que $ coincida también con la posición anterior a «\n» o «\r».
- «?». Cuando este caracter va inmediatamente después de cualquier otro cuantificador (se mencionan a continuación), el modelo coincidente es no expansivo. Un modelo no expansivo coincide lo menos posible con la cadena buscada, mientras que el modelo expansivo predeterminado coincide tanto como sea posible con la cadena buscada.
- «?». Un cuantificador,coincide una vez o ninguna con el caracter o subexpresión anterior. Equivale a {0,1}
- «*». Un cuantificador, coincide cero o más veces con el caracter o subexpresión anterior. Equivale a {0,N}.
- «+». Un cuantificador, coincide una o más veces con el caracter o subexpresión anterior. Equivale a {1,N}.
- «{n}». Un cuantificador: coincide exactamente n veces, donde n es un entero no negativo. Por ejemplo, «o{2}» no coincide con la ‘o’ de «soy», pero coincide con las dos oes de «Cooperar».
- «{n,}». Un cuantificador: coincide como mínimo n veces, donde n es un entero no negativo. Por ejemplo, «o{2,}» coincide con todas las oes de «nooooo», pero no coincide con la «o» de «sol».
- «{n,m}». Un cuantificador. M y n son enteros no negativos donde n es menor o igual de m. Coincide n veces como mínimo y m veces como máximo. Tener en cuenta que no se puede incluir un espacio entre la coma y los números.
- «[xy]». Un juego de caracteres, coincide con cualquiera de los caracteres incluidos entre corchetes. Por ejemplo, «[aeu]» coincide con «a» en «Madrid».
- «[^xy]». Un juego de caracteres negativo. Coincide con cualquier caracter no incluido entre corchetes. Por ejemplo, «[^aeu]» coincide con la «M», la»d», la «r», la «d» de «Madrid», pero no coincide con la «a».
- «[a-z]». Un intervalo de caracteres, coincide con cualquier caracter del intervalo especificado. Por ejemplo, «[a-z]» coincide con cualquier caracter alfabético en minúsculas dentro del intervalo de la ‘a’ a la ‘z’.
- «[^a-z]». Caracteres de un intervalo negativo. Es decir, coincide con cualquier caracter que no esté incluido en el intervalo especificado. Por ejemplo, «[^a-z]» coincide con cualquier caracter que no esté incluido en el intervalo de la ‘a’ a la ‘z’.
- «|» Es un carácter disyuntivo: x|y, coincide con x o con y. Por ejemplo, la expresión «Juli(a|o)» coincide con «Julia» o con «Julio».
- «(…)». Una subexpresión que coincide con el modelo entre paréntesis y captura la coincidencia. La coincidencia capturada se puede recuperar en el remplazo mediante las secuencias especiales «\1» «\2» etc. Para que coincidan los paréntesis ( ), utilice «(» o «)».
- «(?:…)». Una subexpresión que coincide con el modelo entre los paréntesis, pero que no captura la coincidencia, es decir, la coincidencia no se almacena para un posible uso posterior. La expresión «(?:\d+)(Salir)» coincide con la palabra «Salir» después de un conjunto de números en una cadena como por ejemplo «123456Salir Gráfico Enlace». Nota, los números no se almacenan y además no serán procesados por el sintetizador. El sintetizador simplemente ignora el contenido de esta Afirmación. Esta subexpresión se considera como grupo de cadena irregular, No se utiliza mucho en los diccionarios.
- «(?=…)». Una subexpresión que realiza una búsqueda anticipada positiva, la cual coincide con la cadena en cualquier punto donde empiece una cadena que coincida con el modelo entre los paréntesis. Por ejemplo, «Juli(?=a|o)» coincide con «Juli» en «Julia» pero no con «Juli» en «Juliu». Ésta es una coincidencia sin captura, es decir, la coincidencia no se captura para un posible uso posterior. Las búsquedas anticipadas no consumen caracteres, es decir, después de que se produce una coincidencia, la búsqueda de la siguiente comienza inmediatamente después de la última coincidencia, no después de los caracteres que componen la cadena de búsqueda anticipada.
- «(?!…)». Una subexpresión que realiza una búsqueda anticipada negativa, la cual coincide con la cadena de búsqueda en cualquier punto donde empiece una cadena que no coincida con el modelo. Por ejemplo, «Juli(?!e|u)» coincide con «Juli» en «Julia» pero no coincide con «Juli» en «Julie». Ésta es una coincidencia sin captura, es decir, la coincidencia no se captura para un posible uso posterior. Las búsquedas anticipadas no consumen caracteres, es decir, después de que se produce una coincidencia, la búsqueda de la siguiente comienza inmediatamente después de la última coincidencia, no después de los caracteres que componen la cadena de búsqueda anticipada.
- «(?<=…)». Afirmación look-behind positiva, es decir, es válida la siguiente expresión sólo si la condición del modelo entre paréntesis se verifica. Por ejemplo, «(?<=0)\d» coincide con cualquier número precedido por cero. Las afirmaciones son sin captura, es decir, no se captura para un posible uso posterior.
- «(?<!…)». Afirmación look-behind no positiva, es decir, es válida la siguiente expresión sólo si la condición del modelo entre paréntesis no se verifica. Por ejemplo, «(?<![1-9])\d» coincide con cualquier número que no está precedido por un número comprendido entre 1 y 9.
Secuencias Especiales
Las secuencias especiales consisten en «\» y un caracter ordinario como en la lista de abajo. Si el caracter ordinario no está en la lista, entonces la expresión resultante coincidirá con el segundo caracter.
- «\A». Coincide sólo en el inicio de la cadena.
- «\Z». Coincide sólo con el final de la cadena.
- «\b». Coincide con el límite de una palabra. Es decir, la posición entre una palabra y un espacio. Por ejemplo, «ir\b» coincide con ‘ir’ en «mentir», pero no coincide con ‘ir’ en «mentira».
- «\B». Coincide con una posición que no es un límite de palabra. La expresión «ir\B» coincide con «ir» en «mentiras», pero no coincide con «ir» en «mentir».
- «\d». Coincide con un dígito. Equivale a «[0-9]».
- «\D». Coincide con un caracter que no sea un dígito. Equivale a «[^0-9]».
- «\s». Coincide con cualquier caracter de espacio en blanco incluidos espacio, tabulación, salto de página, etc. Equivale a «[\f\n\r\t\v]».
- «\S». Coincide con cualquier caracter que no sea un espacio en blanco. Equivale a «[^\f\n\r\t\v]».
- «\w». Coincide con cualquier caracter alfanumérico incluido el subrayado. Equivale a «[A-Za-z0-9_]».
- «\W». Coincide con cualquier caracter que no pertenezca a los caracteres alfanuméricos. Equivale a «[^A-Za-z0-9_]».
Ejemplos
Finalmente llegamos a la parte práctica con los ejemplos.
Por conveniencia usaremos un diccionario temporál en los ejemplos. Para ello, necesitamos ajustar la opción para las expresiones regulares desde el diálogo correspondiente.
Ejemplo 1
El sintetizador eSpeak en español pronuncia con C suave palabras extranjeras que comienzan con «ch», como Christ, christmass, Christofer o Christopher, Christian, etc. Si deseamos escuchar una pronunciación mejor, podemos usar la siguiente expresión regular, muy sencilla.
Patrón: «\bChri\B»
Reemplazar: «Cri»
Explicación: la secuencia especial «\b» marca el inicio de la palabra, mientras que la secuencia «\B» (la B mayúscula) dice que en esta posición no hay limite de palabra.
Cada vez que se encuentra el prefijo «Chri» en el texto, el sintetizador lee el texto indicado en el Reemplazo «Cri».
Tener en cuenta que las secuencias especiales \b y \B son marcadores de posición, no necesitan una recuperación en el reemplazo.
La mayoría de las secuencias especiales, como por ejemplo \s, \w, \d, necesitan ser recuperadas en el reemplazo, si no vamos a recuperarlas no se envierán al sintetizador.
Ejemplo 2
A veces puede ser útil leer el nombre de unidades de medida cuando en el texto aparecen como abreviaturas.
Por ejemplo, 1ml 12 ml. ¿no sería fantástico que el sintetizador las leyera así?
Un mililitro y doce mililitros.
Necesitamos dos expresiones regulares para distinguir el plural y el singular.
Primera expresión regular.
Patrón: «(^|\s)1[ ]?ml\b»
Reemplazar: «\1un mililitro»
Segunda expresión:
Patrón: «(?<=\d)[ ]?ml\b».
Reemplazar: » Mililitros».
Explicación: la primera subexpresión «(^|\s)» tiene en cuenta si la posición está al principio o si hay un espacio antes del número 1.
Esta subexpresión se puede recuperar en el remplazo mediante la secuencia especial \1.
Recuerda que las subexpresiones regulares entre paréntesis, llamadas también grupos de cadena, se pueden recuperar en el remplazo con la secuencia especial correspondiente. Es decir, el primer grupo de cadena de izquierda a derecha se recupera con \1, el segundo con \2, etcétera. Después del grupo está el número 1, ya que estamos buscando en el texto 1ml o 1 ml, puede ser que haya o no un espacio entre el número y la abreviatura.
Entre corchetes se ha puesto un espacio, se pueden añadir distintos caracteres de espacio. Luego hay un cuantificador, cerrar interrogación, que indica que este espacio puede aparecer una vez o ninguna.
Finalmente, nuestra abreviatura ml y una secuencia especial «\b» para cerrar la expresión regular.
La secuencia al fin indica un límite de palabra, es decir que «ml\b» no puede coincidir por ejemplo con «mls» o «mla».
La segunda expresión regular se abre con una aserción «(?<=\d), significa que nuestra expresión Es válida solo si hay un dígito antes.
La aserción usa una secuencia especial «\d» que coincide con cualquier número.
Entonces, ¿por qué no funciona si antes está solo el número 1?
Te toca adivinar la respuesta…
Ahora, gracias a las dos expresiones regulares, cuando «ml» es precedido por 1 o ningún caracter alfanumérico, el sintetizador lee «mililitro». En los demás casos el sintetizador lee «mililitros».
El orden es importante, las expresiones regulares más arriba Tienen prioridad y pueden cancelar las expresiones posteriores. Por eso la segunda expresiónSe inserta a continuación de la primera.
¿A qué estás esperando? Ahora trata de crear reglas para leer otras unidades como Kg, MB, m² o cm³.
Ejemplo 3
Todavía es común separar los millares, millones, etc., mediante un espacio Para facilitar la lectura de números cuando constan de más de cuatro cifras:
12 354 o 1 303 404.
Algunos sintetizadores no leen correctamente esta forma de escribir los números enteros, más adelante se explica cómo configurar una expresión regular para leerlos correctamente.
Abrimos un diálogo para crear nuestro diccionario del habla desde el menú Preferencias.
Necesitamos ajustar el patrón para comparar como expresión regular desde el botón de opción correspondiente, y rellenar el campo Patrón y el campo de reemplazar.
Patrón: «(?<=\d)([ ]?)(\d{3})»
reemplazar: «\2»
Vamos a explicar.
La primera afirmación indica que la búsqueda es cierta si hay un dígito antes de la cadena. Sigue una subexpresión entre paréntesis con un conjunto de espacios dentro, son tres signos distintos de espacio que se pueden encontrar.
Recuerda que solo uno de los caracteres entre corchetes coincide con la búsqueda, luego hay un cuantificador «?» para indicar que se puede encontrar cero o una sola vez. Sigue a la derecha otra subexpresión entre paréntesis que indica un número de tres dígitos. El cuantificador «{3}» significa que el dígito «\d» debe repetirse tres veces, ni más ni menos.
Vamos a ver lo que tenemos que insertar en el campo reemplazar.
La primera subexpresión «(?<=\d)» en el patrón es una afirmación, no se almacena para un posible uso en el remplazo. Esto no significa que no se tengan en cuenta los caracteres de esa afirmación, el sintetizador va a leer estos dígitos junto a los otros sin recuperar la subexpresión en el campo reemplazar.
El segundo grupo o subexpresión «([ ]?)» es una subexpresión regular y se puede recuperar en el remplazo mediante la secuencia especial \1. Pero nosotros queremos excluirlo, así que no lo recuperamos.
Por el contrario, vamos a recuperar la tercera subexpresión «(\d{3})» mediante la secuencia especial \2.
De esta manera enviamos al sintetizador un número sin espacios entre los dígitos.
Ejemplo 4
Cuando consultamos una lista de números de teléfono o algo similar, puede ser útil leer los números dígito a dígito.
Por ejemplo, si encontramos 3332211444 podríamos leerlo como si estuviera escrito «3 3 3 2 2 1 1 4 4 4».
Necesitamos una secuencia especial en el patrón de búsqueda que encuentre o coincida con cualquier número, y luego añadir un espacio después de cada dígito sólo cuando es seguido por otro dígito.
Patrón: «(\d)(?=\d)»
Reemplazar: «\1 «.
En el reemplazo recuperamos el primer grupo «(\d)» con «\1», e inmediatamente después hay un espacio. El patrón de búsqueda encuentra cualquier dígito solo si va seguido de otro dígito.
Este es un ejemplo de una expresión regular que se puede utilizar en determinados casos, pero la mayoría de las veces dá como resultado una lectura tediosa. Está bien para leer números de teléfono, pero no sería agradable leer por ejemplo «Son las 13:26».
Como hemos visto, las expresiones regulares permiten encontrar un texto específico y reemplazarlo a nuestro gusto antes de enviarlo al sintetizador.
La mayoría de las veces es suficiente utilizar expresiones regulares simples, aunque debemos tener en cuenta que cuanto más simple sea la expresión regular, menos específica será la búsqueda.
Una sugerencia antes de concluir: no se deberían crear diccionarios del habla muy largos. Si el diccionario es demasiado grande puede ralentizar mucho el lector de pantalla. (1500 expresiones o más).
Además, no hay necesidad de corregir los errores de ortografía, o tratar de simular la pronunciación extranjera cuando el sintetizador no tiene los fonemas necesarios.