Corrección de errores de pronunciación en el comando 'Decir' en la terminal

4

Estoy teniendo dificultades para corregir la pronunciación en el comando 'decir', usando 10.9.

Intenté agregar nuevas pronunciaciones a través de:

Preferencias del sistema & gt; Dictado y Discurso & gt; Abrir preferencias de accesibilidad & gt; Abrir la utilidad VoiceOver & gt; Discurso & gt; Pronunciación & gt; +

Después de agregar una nueva entrada, la probé en Terminal y TextEdit y no la pronuncié correctamente:

$ say -v "Samantha" -f filename.txt -o audiofile.aiff

Aunque no funcionó en TextEdit (Editar & gt; Speech & gt; Start Speaking), quiero poder lograr esto en Terminal.

¿Alguien tiene alguna idea de cómo puedo hacer esto?

user75350
fuente
justo antes de ir a Pronunciación, en la pestaña Voces, ¿es Samantha la voz predeterminada? Puede ser que la capacitación solo funcione para el valor predeterminado.
dwightk
Sí, ella es. Todavía parece que no puedo hacer que esto funcione.
user75350

Respuestas:

2

Aqui tienes:

# read.sh <file-to-read> [name-of-voice]
#!/bin/bash

textToRead=$(cat $1)

IFS=$'\n'
while read rep; do
        IFS=" "
        repArray=( $rep )
        textToRead=${textToRead//${repArray[0]}//${repArray[1]}}
done < replacements.txt

if [ -z $2 ]; then
        echo "$textToRead" | say
else
        echo "$textToRead" | say -v $2
fi

Este shell shell lee reemplazos de replacements.txt y usa el comando decir para leer el contenido de los archivos después de reemplazar lo que está definido en replacements.txt.

replacements.txt: Una línea por reemplazo, <search> <replace>.

Lo siento por el código feo ... Odio las secuencias de comandos de bash.

Max Ried
fuente
1
¡Esto es increíble! ¡Muchas gracias por tomarse el tiempo para escribir esto!
user75350
3

De acuerdo a este hilo de 2007 en Discussions.apple.com La utilidad VoiceOver solo corrige pronunciaciones en VoiceOver, no en texto a voz.

Así que si quieres conseguir say para pronunciar correctamente las palabras, debe ejecutar una búsqueda y reemplazo en el archivo de texto por cada palabra mal pronunciada. Probablemente haya una buena manera de hacer esto en un solo paso con un script , pero si solo quieres hacerlo una vez puedas:

  1. Abra el archivo en Text Edit (o cualquier editor de texto que prefiera, me gusta Text Wrangler)
  2. Encuentra (por ejemplo) "mujeres" y reemplaza a todos con "wimmen" (ubicado en Edit > Find > Find and Replace... en Text Edit)
  3. Vaya a la siguiente palabra que desea corregir, busque y reemplace todo hasta que haya corregido todas las declaraciones erróneas.
  4. correr say en el archivo de texto ahora incorrectamente deletreado.
dwightk
fuente
Gracias. Cuál sería la mejor forma de hacer esto? ¿Sería encontrar y reemplazar cada palabra mal pronunciada usando sed o hay una mejor manera? Por curiosidad, ¿hay alguna herramienta de búsqueda de diccionarios disponible en algún lugar?
user75350
1
probablemente podría crear un comando sed que haga todo el buscar y reemplazar en una línea y luego guardarlo como un script bash. A medida que encuentre nuevas pronunciaciones erróneas, podría editar el script.
dwightk