Scorciatoie di sintesi vocale con due lingue


13

Uso molto la funzione di sintesi vocale di Mac. In Impostazioni> Voce> Sintesi vocale ho anche impostato una "Chiave" per un accesso rapido.

Dal momento che voglio anche Text to Speech per leggere il tedesco e OS Lion offre voci per altre lingue, vorrei avere una seconda scorciatoia per il tedesco.

Qualcuno sa dove posso impostare questo? O è l'unico modo per cambiare costantemente la voce di sistema prima che io voglia leggere un testo in tedesco? (E quindi reimpostare la voce su Alex per i testi in inglese)? E il testo in francese?

Quali opzioni esistono per questo problema generale?


2
hai provato la funzionalità già integrata in OS X?
Nohillside

Risposte:


18

Dì come ...

Puoi usare il saycomando con le altre voci di OS X per ottenere lingue diverse. Usa la Thomasvoce per ottenere la pronuncia francese o Yannickper il tedesco.

In questo esempio, userò Thomas e il francese poiché questo è quello che so, ma Yannickdovrei funzionare anche per il testo tedesco.

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

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

Se questo è accettabile, è possibile racchiudere il saycomando in un servizio di Automator; che faremo dopo.

Servizio di automazione

Per creare il servizio Automator:

  1. Avvia Automator.app
  2. Crea una nuova azione rapida (precedentemente assistenza )
  3. Aggiungere un Run AppleScript azione
  4. Copia e incolla in 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

Automator dire servizio

Per utilizzare il servizio:

  1. Seleziona il testo in TextEdit o Safari
  2. Control + Fai clic per visualizzare il menu contestuale
  3. Seleziona Servizi> Parla in francese

Et voilà ! Sono disponibili altre lingue e voci .

Questo approccio di Automator consente di mantenere la voce predefinita del computer impostata sulla lingua preferita. Consentendo al contempo di leggere il testo selezionato con la 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.

2
Sulla base della mia valutazione (molto soggettiva) di madrelingua francese, direi che la voce è molto buona. Sono appena entrato in questo sito per votare la tua risposta!
Rilassato il

2
Bella risposta! Immagino che sia facilmente generalizzabile anche in altre lingue. Quale sarebbe in questo caso il nome dei narratori? :-)
Formica

Sono disponibili molte altre voci e lingue ; vedere la sezione Altre lingue .
Graham Miln,

1
Ho aggiornato la risposta; Credo che il servizio sia ora chiamato Quick Action in macOS 10.14.
Graham Miln,

C'è un modo per selezionare la voce di Siri?
SuperSpy,

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, trascina l'azione "Pronuncia testo" per creare worklow seleziona Voice (ad esempio: Ryan Speaking) Salva

Ripeti con voci diverse.

(L'elenco dei servizi può essere modificato / ripulito con l'applicazione Service Scrubber e in parte in Preferenze di Sistema> Tastiera> Tasti di scelta rapida> Servizi)

Modifica: ora che hai due o più voci nel menu Servizi, puoi andare su: Preferenze di Sistema> Tastiera> Tasti di scelta rapida> Tasti di scelta rapida dell'applicazione e creare un nuovo tasto di scelta rapida per ogni voce.

Finora funziona così sulla mia macchina (OS 10.6.8): Voce di sistema predefinita: Ryan (Infovox) Scorciatoia selezionata in Voce pref per Control + S. Questo avvia e arresta il testo inglese.

La voce tedesca che ho assegnato Control + Y (voce Yannick da 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 di avvio / arresto, qui Control + S + S. Il motivo per due volte è perché premendo una volta inizia la voce inglese sulla voce tedesca. È il massimo che ho potuto inventare finora. Assicurarsi che le scorciatoie non siano in conflitto con altre scorciatoie. Noterai che il collegamento aggiuntivo ti consente di avviare diversi thread vocali, parlando l'uno sull'altro più la voce di sistema predefinita, che aumenta l'attività del processore, ma nessun problema se si ricorda di interrompere la parola eseguendo due volte il collegamento per il voce predefinita.

Non sono sicuro che funzioni 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 sintesi vocale secondaria tramite il servizio Automator, il processo di Automator Runner porta l'attività del processore a un livello superiore al 100% con la velocità delle ventole. Non sono sicuro se esiste una soluzione a questo.


1
È possibile aggiungere uno screenshot del flusso di lavoro di Automator? Con Automator questo di solito è più facile da capire di una descrizione testuale
nohillside

2

È inoltre possibile impostare la voce di sistema su una francese.

Vai a Preferenze di Sistema> Dettatura e voce> Sintesi vocale e imposta la voce di sistema, ad Thomasesempio.

Poi:

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

C'è anche un'opzione per impostare una scorciatoia, quindi puoi semplicemente selezionare qualsiasi testo e premere la scorciatoia per iniziare a parlare in francese.



2
  1. Avvia Automator.app

  2. Crea un nuovo servizio

  3. Aggiungere un Pronuncia testo azione

  4. Seleziona Samantha

  5. Salva il servizio come SpeakSamantha

Aggiungi un'azione Pronuncia testo

Imposta una scorciatoia da tastiera per il servizio

  1. Apri le Preferenze di Sistema

  2. Seleziona tastiera

  3. Seleziona scorciatoie

  4. Seleziona servizi

  5. Crea una scorciatoia, Comando + Alt + 1 per SpeakSamantha

Crea un collegamento per SpeakSamantha

Per utilizzare il servizio

  1. Apri un browser

  2. Seleziona alcuni testi in inglese

  3. Premi Comando + Alt + 1

Per interrompere il discorso (Metodo 1)

  1. Premi Alt + ESC

Per interrompere il discorso (metodo 2)

  1. Fai clic sull'icona della ruota dentata nella barra dei menu

  2. Fai clic su

Fai clic sull'icona della ruota dentata nella barra dei menu

Per aggiungere una seconda voce

  1. Ripetere il processo sopra riportato aggiungendo le seguenti modifiche minori

  2. Seleziona una seconda voce, ad esempio Anna , una voce tedesca

  3. Salva il servizio come SpeakAnna

  4. Crea una scorciatoia da tastiera, Comando + Alt + 2 per SpeakAnna

Un piccolo problema noto: non premere più una scorciatoia prima di terminare il discorso o il discorso termina. Altrimenti, riceverai un messaggio di errore come il seguente.

inserisci qui la descrizione dell'immagine


1

L'uso di un servizio personalizzato con l' Speak Textazione standard per pronunciare il testo selezionato con una voce alternativa specifica presenta un grave svantaggio, come dettagliato nella risposta di Mikofox :

Non è possibile interrompere facilmente la riproduzione come è possibile con il servizio TTS integrato semplicemente premendo nuovamente la scorciatoia da tastiera.

Esistono due soluzioni :

Divulgazione: ho creato i servizi preconfezionati e l' voicesinterfaccia della riga di comando

  • Costruisci invece un servizio personalizzato con Run Shell Scriptun'azione , in cui usi l' sayinterfaccia della riga di comando , che consente di implementare un interruttore di riproduzione (interrompendo il discorso se richiamato mentre stai ancora parlando dall'invocazione precedente)

    • Vedi sotto per una semplice implementazione che funziona, ma non rispetterà le frequenze vocali personalizzate (parole al minuto) che potresti aver configurato per le singole voci tramite Preferenze di Sistema.
    • Una soluzione che rispetta le tariffe vocali personalizzate richiede un po 'più di lavoro; puoi trovare un servizio preconfezionato qui ; o usa il link per il download diretto (rimarrà aggiornato) ..
  • In alternativa, creare un servizio che cambia la voce predefinita su richiesta , che consente quindi di utilizzare il servizio TTS integrato con la sua funzione di attivazione / disattivazione della riproduzione.

    • Sebbene OSX non offra alcun modo programmatico per modificare la voce predefinita, è possibile utilizzare un servizio preconfezionato basato sulla voicesCLI :
      seguire le istruzioni qui o utilizzare il collegamento per il download diretto (rimarrà aggiornato).

Semplice implementazione di un servizio con interruttore di riproduzione :

Come detto, questo non rispetterà le tariffe vocali personalizzate configurate per la voce scelta.

  • Crea un nuovo servizio in Automator
  • Lascia i valori predefiniti (il servizio riceve il testo in qualsiasi applicazione)
  • Aggiungi Run Shell Scriptun'azione 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"

0

Come menzionato da Mikofox, puoi creare un servizio di Automator per la lettura di testi:

Esiste un bug in 10.8 e 10.7 in cui le scorciatoie per i servizi di Automator non funzionano sempre finché non si passa con il mouse sul menu dei servizi dalla barra dei menu.
WorkflowServiceRunner può anche utilizzare oltre il 100% di CPU quando si parla di testo.

Ho usato FastScripts per assegnare un collegamento a questo script:

try -- if the clipboard is empty, trying to get it results in an error
    set old to the clipboard as record
end try
try
    tell application "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 è semplicemente eseguire qualcosa di simile pbpaste | say -v kyoko.


1
C'è un modo per selezionare la voce di Siri nei tuoi strumenti? Grazie per aver creato l'utilità vocale predefinita switch!
SuperSpy,

Questa tecnica pbpaste è eccellente! Grazie! echo 'Guten Tag. Wie geht es?' | pbcopy && pbpaste | say -v Anna
Vladimir Vukanac,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.