Raccourcis de synthèse vocale en deux langues

13

J'utilise beaucoup la fonction Text to Speech de Mac. Sous Paramètres> Parole> Synthèse vocale, j'ai également défini une "clé" pour un accès rapide.

Étant donné que je souhaite également que la synthèse vocale lise l'allemand et que OS Lion propose des voix pour d'autres langues, j'aimerais avoir un deuxième raccourci pour l'allemand.

Est-ce que quelqu'un sait où je peux régler cela? Ou est-ce le seul moyen de changer constamment la voix du système avant de vouloir lire un texte allemand? (Et puis réinitialiser la voix à Alex pour les textes anglais)? Et qu'en est-il du texte français?

Quelles options existent pour ce problème général?

Joseph
la source
2
avez-vous essayé la fonctionnalité déjà intégrée à OS X?
nohillside

Réponses:

18

Dites comme…

Vous pouvez utiliser la saycommande avec les autres voix d'OS X pour obtenir différentes langues. Utilisez la Thomasvoix pour obtenir la prononciation française ou Yannickpour l'allemand.

Dans cet exemple, j'utiliserai Thomas et le français car c'est ce que je sais, mais cela Yannickdevrait également fonctionner pour le texte allemand.

Essayez la commande suivante dans Applications> Utilitaires> Terminal.app :

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

Si cela est acceptable, vous pouvez terminer la saycommande dans un service Automator; que nous ferons ensuite.

Service d'automatisation

Pour créer le service Automator:

  1. Lancez Automator.app
  2. Créer une nouvelle action rapide (anciennement Service )
  3. Ajouter une action Exécuter AppleScript
  4. Copiez et collez dans l'AppleScript ci-dessous:

    on run {input, parameters}
        do shell script "say -v Thomas " & (quoted form of (input as string))
        return input
    end run
    
  5. Enregistrez le service sous Speak in French

Automator say service

Pour utiliser le service:

  1. Sélectionnez du texte dans TextEdit ou Safari
  2. Control + Cliquez pour révéler le menu contextuel
  3. Sélectionnez Services> Parlez en français

Et voilà ! D'autres langues et voix sont disponibles.

Cette approche Automator vous permet de conserver la voix par défaut de votre ordinateur dans votre langue préférée. Tout en permettant la lecture du texte sélectionné dans la voix alternative.

Voix et langues disponibles

Vous pouvez lister les voix disponibles et leurs langues associées avec la commande:

say -v ?

Les voix disponibles peuvent changer entre les versions de macOS. Sur macOS 10.13, la commande renvoie:

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.
Graham Miln
la source
2
Sur la base de ma propre évaluation (très subjective) en tant que francophone natif, je dirais que la voix est très bonne. Je viens de rejoindre ce site pour voter positivement!
Relax
2
très bonne réponse! Je suppose qu'il est facilement généralisable à d'autres langues également. Quel serait dans ce cas le nom des narrateurs? :-)
Ant
De nombreuses autres voix et langues sont disponibles; voir la section Autres langues .
Graham Miln
1
J'ai mis à jour la réponse; Je crois que le service s'appelle désormais Action rapide dans macOS 10.14.
Graham Miln
Existe-t-il un moyen de sélectionner la voix de Siri?
SuperSpy
6

Type de vieux poste et peut-être avez-vous déjà trouvé une solution. Une façon de simplifier cela est avec Automator.

Ouvrez Automator, choisissez Service, le service reçoit le texte sélectionné, faites glisser l'action "Speak Text" pour créer un workflow, sélectionnez Voice (par exemple: Ryan Speaking) Save

Répétez avec différentes voix.

(La liste des services peut être modifiée / nettoyée avec l'application Service Scrubber et en partie sous Préférences Système> Clavier> Raccourcis clavier> Services)

Modifier: Maintenant que vous avez deux voix ou plus dans le menu Services, vous pouvez aller à: Préférences Système> Clavier> Raccourcis clavier> Raccourcis d'application et créer un nouveau raccourci pour chaque voix.

Jusqu'à présent, cela fonctionne comme ceci sur ma machine (OS 10.6.8): Voix système par défaut: Ryan (Infovox) Raccourci sélectionné dans Speech Pref pour Control + S. Cela démarre et arrête le texte anglais.

La voix allemande que j'ai assignée Control + Y (voix Yannick de Lion OS). Control + Y démarre la voix allemande pour le texte allemand sélectionné; qui peut être arrêté en cliquant deux fois sur le raccourci principal marche / arrêt, ici Contrôle + S + S. La raison en est deux fois parce que le fait d'appuyer une fois lance la voix anglaise sur la voix allemande. C'est le mieux que j'ai pu faire jusqu'ici. Assurez-vous que les raccourcis n'entrent pas en conflit avec d'autres raccourcis. Vous remarquerez que le raccourci supplémentaire vous permet de démarrer plusieurs threads vocaux, en discutant les uns avec les autres ainsi que la voix système par défaut, ce qui augmente l'activité du processeur, mais pas de problème si l'on se souvient d'arrêter de parler en exécutant deux fois le raccourci pour le voix par défaut.

Je ne sais pas si cela fonctionne à l'échelle du système, mais fonctionne dans mes navigateurs, Mail et l'application BookReader que j'utilise.

Edit 2: J'ai remarqué que lors de l'activation d'une voix de synthèse vocale secondaire via le service Automator, le processus Automator Runner augmente l'activité du processeur à plus de 100% avec des ventilateurs accélérant. Je ne sais pas s'il y a une solution à cela.

Mikofox
la source
1
Pouvez-vous ajouter une capture d'écran de votre flux de travail Automator? Avec Automator, cela est généralement plus facile à comprendre qu'une description textuelle
nohillside
2

Vous pouvez également définir la voix du système sur une voix française.

Accédez à Préférences système> Dictée et parole> Synthèse vocale et définissez la voix système Thomaspar exemple.

Alors:

  1. Sélectionnez n'importe quel texte dans n'importe quelle application
  2. Control+ Cliquez pour révéler le menu contextuel
  3. Choisissez Discours> Commencez à parler

Il existe également une option pour définir un raccourci, vous pouvez donc simplement sélectionner n'importe quel texte et appuyer sur le raccourci pour commencer à parler en français.

Arthur
la source
2

J'ai écrit un outil pour ça, allez sur:

https://github.com/Fredmf/polyglott

Fred Flügge
la source
Salut, bienvenue à Ask Different. Veuillez expliquer un peu ce que fait votre outil et comment. Merci!
Jaime Santa Cruz
Merci d'avoir créé ceci. J'ai trouvé cet outil le plus utile sur cette page.
SuperSpy
2
  1. Lancez Automator.app

  2. Créer un nouveau service

  3. Ajouter une action Speak Text

  4. Sélectionnez Samantha

  5. Enregistrez le service sous SpeakSamantha

Ajouter une action Speak Text

Configurer un raccourci clavier pour le service

  1. Ouvrir les préférences système

  2. Sélectionnez le clavier

  3. Sélectionnez les raccourcis

  4. Sélectionnez les services

  5. Créez un raccourci, Commande + Alt + 1 pour SpeakSamantha

Créer un raccourci pour SpeakSamantha

Pour utiliser le service

  1. Ouvrez un navigateur

  2. Sélectionnez quelques textes en anglais

  3. Appuyez sur Commande + Alt + 1

Pour arrêter le discours (méthode 1)

  1. Appuyez sur Alt + ESC

Pour arrêter le discours (méthode 2)

  1. Cliquez sur l' icône de rouage en rotation dans la barre de menu

  2. Cliquez sur le

Cliquez sur l'icône de rouage en rotation dans la barre de menu

Pour ajouter une deuxième voix

  1. Répétez le processus ci-dessus en ajoutant les modifications mineures suivantes

  2. Sélectionnez une deuxième voix, par exemple Anna , une voix allemande

  3. Enregistrez le service sous SpeakAnna

  4. Créer un raccourci clavier, Commande + Alt + 2 pour SpeakAnna

Un petit problème connu: n'appuyez pas sur un raccourci avant de terminer le discours ou la fin du discours. Sinon, vous obtiendrez un message d'erreur comme le suivant.

entrez la description de l'image ici

ffmaer
la source
1

L'utilisation d'un service personnalisé avec l' Speak Textaction standard pour parler du texte sélectionné avec une voix alternative spécifique présente un inconvénient majeur, comme détaillé dans la réponse de Mikofox :

Vous ne pouvez pas facilement arrêter la lecture comme vous le pouvez avec le service TTS intégré simplement en appuyant à nouveau sur le raccourci clavier.

Il existe deux solutions :

Divulgation: j'ai créé les services préemballés et la voicesCLI

  • Créez un service personnalisé avec une Run Shell Scriptaction à la place, dans lequel vous utilisez la sayCLI , ce qui permet d'implémenter une bascule de lecture (arrêt de la parole si elle est invoquée tout en parlant de l'invocation précédente)

    • Voir ci-dessous pour une implémentation simple qui fonctionne, mais elle n'honorera aucun taux de parole personnalisé (mots par minute) que vous pourriez avoir configuré pour des voix individuelles via les Préférences Système.
    • Une solution qui respecte les tarifs de conversation personnalisés nécessite un peu plus de travail; vous pouvez trouver un service préemballé ici ; ou utilisez le lien de téléchargement direct (restera à jour) ..
  • Vous pouvez également créer un service qui commute la voix par défaut à la demande , ce qui vous permet ensuite d'utiliser le service TTS intégré avec sa fonction de bascule de lecture.

    • Alors qu'OSX n'offre aucun moyen programmatique de changer la voix par défaut, vous pouvez utiliser un service préemballé construit sur la voicesCLI :
      suivez les instructions ici ou utilisez le lien de téléchargement direct (restera à jour).

Implémentation simple d'un service avec bascule de lecture :

Comme indiqué, cela n'honorera pas les taux de parole personnalisés configurés pour la voix choisie.

  • Créer un nouveau service dans Automator
  • Laissez les valeurs par défaut (le service reçoit du texte dans n'importe quelle application)
  • Ajoutez une Run Shell Scriptaction et collez ce qui suit:
#  ------- 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"
mklement0
la source
0

Comme Mikofox l'a mentionné, vous pouvez créer un service Automator pour parler du texte:

Il y a un bogue dans 10.8 et 10.7 où les raccourcis pour les services Automator ne fonctionnent pas toujours tant que vous n'avez pas survolé le menu des services dans la barre de menus.
WorkflowServiceRunner peut également utiliser plus de 100% de CPU pour prononcer du texte.

J'ai utilisé FastScripts pour attribuer un raccourci à ce 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

Une autre option consiste à exécuter simplement quelque chose comme pbpaste | say -v kyoko.

Lri
la source
1
Existe-t-il un moyen de sélectionner la voix de Siri dans vos outils? Merci d'avoir créé l'utilitaire vocal par défaut du commutateur!
SuperSpy
Cette technique de pbpaste est excellente! Merci! echo 'Guten Tag. Wie geht es?' | pbcopy && pbpaste | say -v Anna
Vladimir Vukanac