Scorciatoie da Text to Speech con due lingue

11

Uso molto la funzione Text to Mac di Mac. In Impostazioni > Discorso > Text to Speech Ho anche impostato una "chiave" per l'accesso rapido.

Dato che voglio anche che Text to Speech legga German e OS Lion offra voci per altre lingue, mi piacerebbe avere una seconda scorciatoia per il tedesco.

Qualcuno sa dove posso impostare questo? O è l'unico modo per cambiare costantemente System Voice prima di voler leggere un testo tedesco? (E poi resettare la voce ad Alex per i testi in inglese)? E il testo francese?

Quali opzioni esistono per questo problema generale?

    
posta Joseph 02.03.2012 - 14:27
fonte

7 risposte

17

Dì come ...

Puoi usare il comando say con le altre voci di OS X per ottenere lingue diverse. Utilizza la voce Thomas per ottenere la pronuncia francese o Yannick per il tedesco.

In questo esempio, userò Thomas e French poiché questo è quello che so ma Yannick dovrebbe funzionare anche per il testo in tedesco.

Prova il seguente comando in Applicazioni > Utilità > Terminal.app :

say -v Thomas  "Bonjour. Je m'appelle Thomas."

Se ciò è accettabile, puoi eseguire il comando say di up in un servizio di Automator; che faremo dopo.

Servizio di automazione

Per creare il servizio di automazione:

  1. Avvia Automator.app
  2. Crea un nuovo servizio
  3. Aggiungi un'azione Esegui AppleScript
  4. Copia e incolla nell'AppleScript di seguito:

    on run {input, parameters}
        do shell script "say -v Thomas " & (quoted form of (input as string))
        return input
    end run
    
  5. Salva il servizio come Parla in francese

Perutilizzareilservizio:

  1. SelezionailtestoinTextEditoSafari
  2. Controllo+Faiclicpervisualizzareilmenudisceltarapida
  3. SelezionaServizi>Parlainfrancese

Etvoilà! Altre lingue e voci sono disponibili.

Questo approccio Automator ti consente di mantenere il tuo set vocale predefinito del computer nella lingua preferita. Mentre consente di leggere il testo selezionato nella voce alternativa.

Voci e lingue disponibili

Puoi elencare le voci disponibili e le loro lingue associate con il comando:

say -v ?

Le voci disponibili possono cambiare tra le versioni di macOS. Su macOS 10.13, il comando restituisce:

Alex                en_US    # Most people recognize me by my voice.
Alice               it_IT    # Salve, mi chiamo Alice e sono una voce italiana.
Alva                sv_SE    # Hej, jag heter Alva. Jag är en svensk röst.
Amelie              fr_CA    # Bonjour, je m’appelle Amelie. Je suis une voix canadienne.
Anna                de_DE    # Hallo, ich heiße Anna und ich bin eine deutsche Stimme.
Carmit              he_IL    # שלום. קוראים לי כרמית, ואני קול בשפה העברית.
Damayanti           id_ID    # Halo, nama saya Damayanti. Saya berbahasa Indonesia.
Daniel              en_GB    # Hello, my name is Daniel. I am a British-English voice.
Diego               es_AR    # Hola, me llamo Diego y soy una voz española.
Ellen               nl_BE    # Hallo, mijn naam is Ellen. Ik ben een Belgische stem.
Fiona               en-scotland # Hello, my name is Fiona. I am a Scottish-English voice.
Fred                en_US    # I sure like being inside this fancy computer
Ioana               ro_RO    # Bună, mă cheamă Ioana . Sunt o voce românească.
Joana               pt_PT    # Olá, chamo-me Joana e dou voz ao português falado em Portugal.
Jorge               es_ES    # Hola, me llamo Jorge y soy una voz española.
Juan                es_MX    # Hola, me llamo Juan y soy una voz mexicana.
Kanya               th_TH    # สวัสดีค่ะ ดิฉันชื่อKanya
Karen               en_AU    # Hello, my name is Karen. I am an Australian-English voice.
Kyoko               ja_JP    # こんにちは、私の名前はKyokoです。日本語の音声をお届けします。
Laura               sk_SK    # Ahoj. Volám sa Laura . Som hlas v slovenskom jazyku.
Lekha               hi_IN    # नमस्कार, मेरा नाम लेखा है. मैं हिन्दी में बोलने वाली आवाज़ हूँ.
Luca                it_IT    # Salve, mi chiamo Luca e sono una voce italiana.
Luciana             pt_BR    # Olá, o meu nome é Luciana e a minha voz corresponde ao português que é falado no Brasil
Maged               ar_SA    # مرحبًا اسمي Maged. أنا عربي من السعودية.
Mariska             hu_HU    # Üdvözlöm! Mariska vagyok. Én vagyok a magyar hang.
Mei-Jia             zh_TW    # 您好,我叫美佳。我說國語。
Melina              el_GR    # Γεια σας, ονομάζομαι Melina. Είμαι μια ελληνική φωνή.
Milena              ru_RU    # Здравствуйте, меня зовут Milena. Я – русский голос системы.
Moira               en_IE    # Hello, my name is Moira. I am an Irish-English voice.
Monica              es_ES    # Hola, me llamo Monica y soy una voz española.
Nora                nb_NO    # Hei, jeg heter Nora. Jeg er en norsk stemme.
Paulina             es_MX    # Hola, me llamo Paulina y soy una voz mexicana.
Samantha            en_US    # Hello, my name is Samantha. I am an American-English voice.
Sara                da_DK    # Hej, jeg hedder Sara. Jeg er en dansk stemme.
Satu                fi_FI    # Hei, minun nimeni on Satu. Olen suomalainen ääni.
Serena              en_GB    # Hello, my name is Serena. I am a British-English voice.
Sin-ji              zh_HK    # 您好,我叫 Sin-ji。我講廣東話。
Tessa               en_ZA    # Hello, my name is Tessa. I am a South African-English voice.
Thomas              fr_FR    # Bonjour, je m’appelle Thomas. Je suis une voix française.
Ting-Ting           zh_CN    # 您好,我叫Ting-Ting。我讲中文普通话。
Tom                 en_US    # Hello, my name is Tom. I am an American-English voice.
Veena               en_IN    # Hello, my name is Veena. I am an Indian-English voice.
Victoria            en_US    # Isn't it nice to have a computer that will talk to you?
Xander              nl_NL    # Hallo, mijn naam is Xander. Ik ben een Nederlandse stem.
Yelda               tr_TR    # Merhaba, benim adım Yelda. Ben Türkçe bir sesim.
Yuna                ko_KR    # 안녕하세요. 제 이름은 Yuna입니다. 저는 한국어 음성입니다.
Yuri                ru_RU    # Здравствуйте, меня зовут Yuri. Я – русский голос системы.
Zosia               pl_PL    # Witaj. Mam na imię Zosia, jestem głosem kobiecym dla języka polskiego.
Zuzana              cs_CZ    # Dobrý den, jmenuji se Zuzana. Jsem český hlas.
    
risposta data 04.09.2015 - 10:20
fonte
6

Tipo di vecchio post e forse hai già trovato una soluzione. Un modo per semplificare questo è con Automator.

Apri Automator, scegli Servizio, Il servizio riceve il testo selezionato, trascinare l'azione "Pronuncia testo" per creare workflow seleziona Voce (ad esempio: Ryan Speaking) Salva

Ripeti con voci diverse.

(L'Elenco servizi può essere modificato / ripulito con Applicazione Scrubber di servizio e in parte in Preferenze di Sistema > Tastiera > Scorciatoie da tastiera > Servizi)

Modifica: Ora che hai due o più voci nel menu Servizi, puoi andare a: Preferenze di sistema > Tastiera > Tasti di scelta rapida > Scorciatoie dell'applicazione e crea una nuova scorciatoia per ogni voce.

Finora, funziona come questo sulla mia macchina (OS 10.6.8): Predefinito System Voice: Ryan (Infovox) Scorciatoia selezionata in Speech Pref per Control + S. Questo avvia e interrompe il testo in inglese.

La voce tedesca che ho assegnato a Control + Y (voce Yannick di Lion OS). Control + Y avvia la voce tedesca per il testo selezionato in tedesco; che può essere interrotto facendo clic due volte sul collegamento principale start / stop, qui Control + S + S. Il motivo del doppio è perché premendo una volta si avvia la voce inglese sulla voce tedesca. È il meglio che ho potuto inventare finora. Assicurati che le scorciatoie non siano in conflitto con altre scorciatoie. Noterai che la scorciatoia aggiuntiva ti consente di avviare più thread vocali, parlando tra di loro più la voce di sistema predefinita, che fa scattare l'attività del processore, ma nessun problema se si ricorda di interrompere la conversazione eseguendo il doppio comando del collegamento per voce predefinita.

Non sono sicuro se funziona a livello di sistema, ma funziona con i miei browser, Mail e l'app BookReader che sto utilizzando.

Modifica 2: Ho notato che quando si attiva una voce vocale text-to-speech secondaria tramite il servizio Automator, il processo di Automator Runner incrementa l'attività del processore oltre il 100% con l'accelerazione dei fan. Non sono sicuro se c'è una soluzione a questo.

    
risposta data 26.11.2012 - 01:15
fonte
2

Potresti anche impostare la voce del sistema su quella francese.

Vai a Preferenze di sistema > Dettatura e amp; Discorso > Text to Speech e imposta la voce di sistema su Thomas , ad esempio.

Quindi:

  1. Seleziona qualsiasi testo in qualsiasi applicazione
  2. Controllo + Fai clic per visualizzare il menu di scelta rapida
  3. Scegli parlato > Inizia a parlare

C'è anche un'opzione per impostare una scorciatoia, quindi puoi selezionare qualsiasi testo e premere il tasto di scelta rapida per iniziare a parlare in francese.

    
risposta data 04.09.2015 - 14:21
fonte
1

L'utilizzo di un servizio personalizzato con l'azione Speak Text standard per pronunciare il testo selezionato con una voce alternativa specifica presenta uno svantaggio principale, come descritto in risposta di Mikofox :

Non puoi facilmente smettere di riprodurre il modo in cui puoi con il servizio TTS integrato semplicemente premendo di nuovo la scorciatoia da tastiera.

Esistono due soluzioni :

Disclosure: ho creato i servizi preconfezionati e voices CLI

  • Costruisci un servizio personalizzato con un'azione Run Shell Script , invece, in cui utilizza la say CLI , che consente l'implementazione di un commutatore di riproduzione (interruzione vocale se invocato) mentre stai ancora parlando dall'invocazione precedente)

    • Vedi sotto per un'implementazione semplice che funziona, ma non onorerà le tariffe parlate personalizzate (parole al minuto) che potresti aver configurato per voci individuali tramite le Preferenze di Sistema.
    • Una soluzione che rispetta le tariffe parlate personalizzate richiede un po 'più di lavoro; puoi trovare un servizio preconfigurato qui ; oppure utilizzare il link per il download diretto (sarà resta aggiornato)
  • In alternativa, crea un servizio che attiva la funzione predefinita su richiesta , che ti consente quindi di utilizzare il servizio TTS integrato con la sua funzione di commutazione della riproduzione.

    • Benché OSX non offra alcun modo programmatico per modificare la voce predefinita, puoi utilizzare un servizio preconfigurato creato su voices CLI :
      Segui le istruzioni qui o usa link di download diretto (rimarrà aggiornato).

Semplice implementazione di un servizio con l'interruttore di riproduzione :

Come affermato, questo non onorerà le tariffe parlate personalizzate configurate per la voce scelta.

  • Crea un nuovo servizio in Automator
  • Lascia i valori predefiniti (il servizio riceve testo in qualsiasi applicazione)
  • Aggiungi un'azione Run Shell Script e incolla quanto segue:
#  ------- BEGIN: CUSTOMIZE
 # Specify the voice to speak with.
voice=Vicki
#  ------- END: CUSTOMIZE

  # If 'say' is running, we assume that a previous invocation is still speaking  
  # and speaking should be *stopped*.
  # Caveat: This will only work if either the original app from which speaking was initiated is still
  #         frontmost with text selected, or, coincidentally, a now different frontmost app also has
  #         text selected. Otherwise, this service won't be active.
pgrep -x say && { pkill -x say; exit; }

  # Read the text to speak into a variable.
txt=$(</dev/stdin)

  # Speak, using the standard 'say' CLI.
say -v "$voice" "$txt"
    
risposta data 27.07.2015 - 18:14
fonte
1

Ho scritto uno strumento per questo, vai su:

link

    
risposta data 27.09.2016 - 14:44
fonte
1
  1. Avvia Automator.app

  2. Crea un nuovo servizio

  3. Aggiungi un'azione Pronuncia testo

  4. Seleziona Samantha

  5. Salva il servizio come SpeakSamantha

Impostaunascorciatoiadatastieraperilservizio

  1. ApriPreferenzedisistema

  2. SelezionaTastiera

  3. SelezionaCollegamenti

  4. SelezionaServizi

  5. Creauncollegamento,Comando+Alt+1perSpeakSamantha

Perutilizzareilservizio

  1. Apriunbrowser

  2. Selezionaalcunitesti

  3. PremiComando+Alt+1

Perinterrompereildiscorso(Metodo1)

  1. PremiAlt+ESC

Perinterrompereildiscorso(Metodo2)

  1. Faiclicsull'iconaspinningcognellabarradeimenu

  2. Faiclicsu

Peraggiungereunasecondavoce

  1. Ripetiilprocedimentosopraaggiungendoleseguentimodificheminori

  2. Selezionaunasecondavoce,adesempioAnna,unavocetedesca

  3. SalvailserviziocomeSpeakAnna

  4. Creaunascorciatoiadatastiera,Comando+Alt+2perSpeakAnna

Unpiccoloproblemanoto:nonpremeredinuovounascorciatoiaprimacheterminiildiscorsootermini.Altrimenti,riceveraiunmessaggiodierroresimilealseguente.

    
risposta data 29.05.2018 - 08:44
fonte
0

Come menzionato da Mikofox, puoi creare un servizio Automator per il testo parlante:

C'èunbugin10.8e10.7dovelescorciatoieperiservizidiAutomatornonfunzionanosemprefinchénonsipassaconilmousesulmenuservizidallabarradeimenu.
WorkflowServiceRunnerpuòancheutilizzareoltreil100%dellaCPUquandoparlailtesto.

HousatoFastScriptsperassegnareuncollegamentoaquestoscript:

try--iftheclipboardisempty,tryingtogetitresultsinanerrorsetoldtotheclipboardasrecordendtrytrytellapplication"System Events" to keystroke "c" using command down
    delay 0.05
    set input to the clipboard
    try
        set the clipboard to old
    end try
    say input using "Kyoko"
end try

Un'altra opzione è eseguire solo qualcosa come pbpaste | say -v kyoko .

    
risposta data 26.11.2012 - 12:13
fonte

Leggi altre domande sui tag