Atalhos de texto para fala com dois idiomas


13

Eu uso muito a função Text to Speech do Mac. Em Configurações> Fala> Texto em fala, também defini uma "Chave" para acesso rápido.

Como também quero que o Text to Speech leia alemão e o OS Lion ofereça vozes para outros idiomas, gostaria de ter um segundo atalho para o alemão.

Alguém sabe onde eu posso definir isso? Ou é a única maneira de alterar constantemente a voz do sistema antes que eu queira que um texto em alemão seja lido? (E redefinir a voz para Alex para textos em inglês)? E o texto em francês?

Que opções existem para esse problema geral?


2
você tentou a funcionalidade já incorporada no OS X?
nohillside

Respostas:


18

Diga como ...

Você pode usar o saycomando com outras vozes do OS X para obter idiomas diferentes. Use a Thomasvoz para obter pronúncia francesa ou Yannickpara alemão.

Neste exemplo, usarei Thomas e francês, pois é o que sei, mas também Yannickdeve funcionar para o texto em alemão.

Experimente o seguinte comando em Aplicativos> Utilitários> Terminal.app :

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

Se isso for aceitável, você pode agrupar o saycomando em um serviço do Automator; o que faremos a seguir.

Serviço de Automator

Para criar o Serviço de Automator:

  1. Inicie o Automator.app
  2. Crie uma nova ação rápida (anteriormente Serviço )
  3. Adicionar uma ação Executar AppleScript
  4. Copie e cole no AppleScript abaixo:

    on run {input, parameters}
        do shell script "say -v Thomas " & (quoted form of (input as string))
        return input
    end run
    
  5. Salve o serviço como falar em francês

Automator diz serviço

Para usar o serviço:

  1. Selecione o texto no TextEdit ou Safari
  2. Control + Clique para exibir o menu de contexto
  3. Selecione Serviços> Falar em francês

Et voilà! Outros idiomas e vozes estão disponíveis.

Essa abordagem do Automator permite manter a voz padrão do computador definida no idioma preferido. Enquanto permite que o texto selecionado seja lido na voz alternativa.

Vozes e idiomas disponíveis

Você pode listar as vozes disponíveis e os idiomas associados com o comando:

say -v ?

As vozes disponíveis podem mudar entre as versões do macOS. No macOS 10.13, o comando retorna:

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
Baseado na minha própria avaliação (muito subjetiva) como um falante nativo de francês, eu diria que a voz é muito boa. Acabei de entrar neste site para votar sua resposta!
relaxada

2
Ótima resposta! Eu acho que é facilmente generalizável para outros idiomas também. Qual seria, nesse caso, o nome dos narradores? :-)
Ant

Muitas outras vozes e idiomas estão disponíveis; consulte a seção Outros idiomas .
precisa saber é o seguinte

1
Eu atualizei a resposta; Acredito que o Serviço agora se chama Ação Rápida no macOS 10.14.
Graham Miln 02/07/19

Existe uma maneira de selecionar a voz da Siri?
SuperSpy 30/09/19

6

Tipo de post antigo e talvez você já tenha encontrado uma solução. Uma maneira de simplificar isso é com o Automator.

Abra o Automator, escolha Serviço, Serviço recebe o texto selecionado, arraste a ação "Falar texto" para criar um fluxo de trabalho, selecione Voz (por exemplo: Ryan Speaking) Salvar

Repita com vozes diferentes.

(A Lista de serviços pode ser editada / limpa com o Aplicativo Scrubber e parcialmente em Preferências do sistema> Teclado> Atalhos do teclado> Serviços)

Editar: agora que você tem duas ou mais vozes no menu Serviços, pode ir para: Preferências do sistema> Teclado> Atalhos do teclado> Atalhos do aplicativo e criar um novo atalho para cada voz.

Até agora, ele funciona assim na minha máquina (OS 10.6.8): Voz padrão do sistema: Ryan (Infovox) Atalho selecionado em Pref de fala para Control + S. Isso inicia e pára o texto em inglês.

A voz alemã que eu designei Control + Y (voz de Yannick do Lion OS). Control + Y inicia a voz em alemão para o texto selecionado em alemão; que pode ser interrompido clicando duas vezes no atalho inicial / inicial principal, aqui Control + S + S. A razão para duas vezes é porque pressioná-lo uma vez inicia a voz em inglês sobre a voz em alemão. Foi o melhor que pude chegar até agora. Verifique se os atalhos não entram em conflito com outros atalhos. Você notará que o atalho adicional permite iniciar vários threads de voz, conversando entre si e a voz padrão do sistema, o que aumenta a atividade do processador, mas não há problema se alguém se lembrar de interromper a fala executando duas vezes o atalho para o voz padrão.

Não tenho certeza se isso funciona em todo o sistema, mas funciona nos meus navegadores, no Mail e no aplicativo BookReader que estou usando.

Edição 2: Observei que, ao ativar uma voz secundária de conversão de texto em fala através do Serviço Automator, o processo Automator Runner aumenta a atividade do processador para acima de 100%, com os ventiladores acelerando. Não tenho certeza se existe uma solução para isso.


1
Você pode adicionar uma captura de tela do seu fluxo de trabalho do Automator? Com o Automator, isso geralmente é mais fácil de entender do que uma descrição textual
nohillside

2

Você também pode definir a voz do sistema como francesa.

Vá para Preferências do sistema> Ditado e fala> Texto para fala e defina a voz do sistema como, Thomaspor exemplo.

Então:

  1. Selecione qualquer texto em qualquer aplicativo
  2. Control+ Clique para exibir o menu de contexto
  3. Escolha Fala> Começar a falar

Há também uma opção para definir um atalho, para que você possa selecionar qualquer texto e pressionar o atalho para começar a falar em francês.



2
  1. Inicie o Automator.app

  2. Crie um novo serviço

  3. Adicionar uma ação Falar texto

  4. Selecione Samantha

  5. Salve o serviço como SpeakSamantha

Adicionar uma ação Falar texto

Configurar um atalho de teclado para o serviço

  1. Abra Preferências do Sistema

  2. Selecionar teclado

  3. Selecione Atalhos

  4. Selecione Serviços

  5. Crie um atalho, Command + Alt + 1 para SpeakSamantha

Crie um atalho para SpeakSamantha

Para usar o serviço

  1. Abra um navegador

  2. Selecione alguns textos em inglês

  3. Pressione Command + Alt + 1

Para parar o discurso (método 1)

  1. Pressione Alt + ESC

Para parar o discurso (método 2)

  1. Clique no ícone de engrenagem giratória na barra de menus

  2. Clique no botão

Clique no ícone de engrenagem giratória na barra de menus

Para adicionar uma segunda voz

  1. Repita o processo acima adicionando as seguintes pequenas alterações

  2. Selecione uma segunda voz, por exemplo, Anna , uma voz alemã

  3. Salve o serviço como SpeakAnna

  4. Crie um atalho de teclado, Command + Alt + 2 para SpeakAnna

Um pequeno problema conhecido: não pressione um atalho novamente antes de terminar o discurso ou o discurso termina. Caso contrário, você receberá uma mensagem de erro como a seguinte.

insira a descrição da imagem aqui


1

O uso de um serviço personalizado com a Speak Textação padrão para falar o texto selecionado com uma voz alternativa específica tem uma grande desvantagem, conforme detalhado na resposta da Mikofox :

Você não pode parar facilmente a reprodução da maneira que pode com o serviço TTS embutido, simplesmente pressionando o atalho do teclado novamente.

Existem duas soluções :

Divulgação: criei os serviços pré-empacotados e a voicesCLI

  • Em vez disso, crie um serviço personalizado com uma Run Shell Scriptação , na qual você usa a sayCLI , que permite implementar uma alternância de reprodução (interromper a fala se for invocada enquanto ainda estiver falando da invocação anterior)

    • Veja abaixo uma implementação simples que funciona, mas não respeitará nenhuma taxa de fala personalizada (palavras por minuto) que você possa ter configurado para vozes individuais por meio das Preferências do sistema.
    • Uma solução que respeite as taxas de conversação personalizada exige muito mais trabalho; você pode encontrar um serviço pré - empacotado aqui ; ou use o link de download direto (permanecerá atualizado).
  • Como alternativa, crie um serviço que alterne a voz padrão sob demanda , o que permitirá que você use o serviço TTS interno com seu recurso de alternância de reprodução.

    • Embora o OSX não ofereça uma maneira programática de alterar a voz padrão, você pode usar um serviço pré - empacotado construído na voicesCLI :
      Siga as instruções aqui ou use o link de download direto (permanecerá atualizado).

Implementação simples de um serviço com alternância de reprodução :

Como afirmado, isso não respeitará as taxas de fala personalizadas configuradas para a voz escolhida.

  • Crie um novo serviço no Automator
  • Deixe os padrões (o serviço recebe texto em qualquer aplicativo)
  • Adicione uma Run Shell Scriptação e cole o seguinte:
#  ------- 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

Como o Mikofox mencionou, você pode criar um serviço Automator para falar texto:

Há um erro nas versões 10.8 e 10.7, em que os atalhos para os serviços do Automator nem sempre funcionam até você passar o mouse sobre o menu de serviços na barra de menus.
O WorkflowServiceRunner também pode usar mais de 100% da CPU ao falar texto.

Eu usei o FastScripts para atribuir um atalho para este 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

Outra opção é apenas executar algo parecido pbpaste | say -v kyoko.


1
Existe uma maneira de selecionar a voz da Siri em suas ferramentas? Obrigado por criar o utilitário de voz padrão do switch!
SuperSpy 30/09/19

Essa técnica de pbpaste é excelente! Obrigado! echo 'Guten Tag. Wie geht es?' | pbcopy && pbpaste | say -v Anna
Vladimir Vukanac em 25/01
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.