¿Cómo cambiar el volumen de "decir" en AppleScript?

3

Aquí hay una línea de mi AppleScript que habla el texto seleccionado:

set this_say_Pid to do shell script "LANG=en_US.UTF-8 pbpaste -Prefer txt | say > /dev/null 2>&1 & echo $!"

Me gustaría que el volumen del habla fuera mucho más bajo. Preferiría no lograr esto reduciendo el volumen general de mi sistema.

Puedo disminuir exitosamente el volumen de say en la Terminal con el siguiente código:

say "[[volm 0.35]] This is a sentence"

Pero, cuando inserto [[volm 0.35]] en mi cadena do shell script , el volumen no cambia.

    
pregunta rubik's sphere 18.03.2017 - 08:57

3 respuestas

5

Ya que estás canalizando , la salida del comando pbpaste directamente a say comando , por ejemplo, [[volm 0.35]] tendría que ser parte de lo que está en el portapapeles como, por ejemplo, [[volm 0.35]] debe preceder al contenido de lo que realmente se va a decir.

Intentaré usar lo siguiente en lugar de lo que estás usando:

set howLoudAndWhatToSay to "[[volm 0.35]] \"" & (get the clipboard as string) & "\""

set this_say_Pid to do shell script "say " & howLoudAndWhatToSay & " > /dev/null 2>&1 & echo $!"

Actualizar: Si desea continuar usando pbpaste , este comando de ejemplo debería funcionar:

set this_say_Pid to (do shell script "echo \"[[volm 0.35]] $(LANG=en_US.UTF-8 pbpaste -Prefer txt)\" | say > /dev/null 2>&1 & echo $!")

Tenga en cuenta las diferencias principales entre el comando dentro del do shell script "..." comando en su pregunta y mi respuesta.

  • echo \"[[volm 0.35]] se agrega delante de LANG=... y tenga en cuenta el espacio después de ]] .
  • El LANG=en_US.UTF-8 pbpaste -Prefer txt ahora está encerrado en $(...) , que está usando Sustitución de comandos para, en esencia, concatenar lo que se hace eco en el pipe antes del say comando .

  • Además de un literal de cierre coincidente, comillas dobles \" , antes del pipe a say , para ir con el que está en echo \"[[volm 0.35]] . Funcionó en pruebas limitadas sin el uso de las comillas dobles de apertura y cierre, sin embargo, probablemente sea mejor incluirlas entre comillas dobles para tener en cuenta algo que shell podría intentar expandir innecesariamente.

Dicho esto, en mi sistema el uso de 0.35 para el valor en [[volm 0.35]] no funcionó bien ya que fue difícil percibir la diferencia en el volumen de mi configuración normal. Sin embargo, al utilizar 0.3 en [[volm 0.3]] , la diferencia fue notable. (Esta es una de las razones por las que usé "por ejemplo, [[volm 0.35]] " en mi oración inicial).

    
respondido por el user3439894 18.03.2017 - 10:30
0

Simplemente mueva la primera comilla doble: ... "say [[volm 0.35]] This is a sentence"

En Terminal.app las cotizaciones no son necesarias y say [[volm 0.35]] This is a sentence simplemente funciona.

En la línea de su código, tendría que anteponer [[volm 0.35]] al texto copiado.

En la Terminal, la siguiente línea funcionaría:

cat <(echo [[volm 0.35]] ) <(LANG=en_US.UTF-8 pbpaste -Prefer txt) | say 

pero no consigo que esto funcione correctamente en su línea de AppleScript, probablemente tenga que escapar de uno o varios elementos.

    
respondido por el klanomath 18.03.2017 - 09:07
0

respuesta simple:

say "[[volm 0.04]] This is a sentence"

Me parece que de 0.01 a 0.04 es el volumen de salida más pequeño.

Cuando probé 0.25 o 0.35, el volumen no cambió.

    
respondido por el S.Doe_Dude 29.06.2017 - 00:49

Lea otras preguntas en las etiquetas