Mac OS X - Altere rapidamente as vozes para conversão de texto em fala

10

Adoro o recurso de conversão de texto em fala do Mac OS X. Como não sou um falante nativo de inglês, estou muito feliz com todos os idiomas adicionais adicionados desde que o Lion foi lançado. No entanto, eu uso o inglês e também o meu idioma nativo (alemão). Mudar de voz é um pouco doloroso. Requer apenas muitas etapas para ser confortável.

Existe alguma maneira de facilitar isso? Eu estava procurando por atalhos, talvez um menu suspenso em algum lugar no canto direito, tudo ficaria bem.

Como minha pesquisa não foi bem-sucedida, espero encontrar alguns conselhos aqui no SuperUser. Muito obrigado!

cu romano


fonte
Estou no Mac e criei o Talkie: uma extensão de navegador de conversão de texto em fala com detecção automática de idioma. É tudo de código aberto, mas alguns recursos estão na distribuição comercial Talkie Premium. Mais fácil de usar no navegador (com teclas de atalho), mas você pode usá-lo em qualquer aplicativo através da área de transferência (premium). Pode ajudá-lo! Joelpurra.com/projects/talkie
Joel Purra

Respostas:

9

Eu usei o FastScripts para atribuir um atalho para este script:

try
    set old to the clipboard as record
end try
try
    tell application "System Events" to keystroke "c" using command down
    delay 0.05
    say (the clipboard) using "Kyoko"
end try
try
    set the clipboard to old
end try

Você também pode criar um serviço no Automator:

Há um bug nas versões 10.7 e 10.8 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 enquanto fala texto.

Outra opção seria usar o script da interface do usuário para mudar entre duas vozes:

tell application "System Preferences"
    reveal anchor "TTS" of pane "com.apple.preference.speech"
end tell
tell application "System Events" to tell process "System Preferences"
    tell pop up button 1 of tab group 1 of window 1
        click
        delay 0.1
        if value is "Alex" then
            click menu item "Victoria" of menu 1
        else
            click menu item "Alex" of menu 1
        end if
    end tell
end tell
quit application "System Preferences"

Alterar a chave SelectedVoiceID em com.apple.speech.voice.prefs.plist também funciona, mas não sei como aplicar as alterações imediatamente.

Lri
fonte
Uau, muito obrigado por esta resposta muito detalhada e por me mostrar tantas opções. O serviço Automator funciona muito bem para mim, além disso agora eu sei sobre esses serviços. I pode querer adicionar alguns outros também :)
1
Coisas boas. No OSX 10.10: para aplicar as alterações ~/Library/Preferences/com.apple.speech.voice.prefs.plistimediatamente, execute pkill com.apple.speech.speechsynthesisd, o que faz com que o sistema reinicie automaticamente o processo, momento em que as alterações são detectadas.
mklement0
1
No meu OS X 10.10.4, os scripts da interface do usuário só funcionam se eu inserir a linha "ativar" entre as linhas 1 e 2. Caso contrário, recebo o erro: „grupo de guias 1 da janela 1 do processo \" Preferências do Sistema \ "" não pode seja lido ... Alguma sugestão para que isso se aplique a mim, mas não a outros?
Jens Wirth
3

Muito obrigado Lauryi.

Estendi sua abordagem de script de interface do usuário para funcionar corretamente com vozes em alemão e inglês. O problema é que, quando o idioma do sistema não é o inglês, todos os idiomas que não são do sistema ficam ocultos (se não estiverem selecionados no momento). Você precisa selecionar: mostrar mais vozes .. primeiro para chegar ao idioma desejado. Meu código não tem um pouco de elegância, mas funciona. Aqui está (atualizado):

tell application "System Preferences"
    reveal anchor "TTS" of pane "com.apple.preference.speech"
end tell
set tom to 0
tell application "System Events" to tell process "System Preferences"
    tell pop up button 1 of tab group 1 of window 1
        click
        delay 0.2 -- without this the value was sometimes "Loading Voices…"

        if value is "Tom" then
            click menu item "Anna" of menu 1
        else
            click menu item "Mehr Stimmen anzeigen" of menu 1 -- show up all available voice
            set tom to 1
        end if
    end tell
end tell
if tom is 1 then
    delay 0.5
    tell application "System Events" to tell process "System Preferences"
        tell pop up button 1 of tab group 1 of window 1
            click
            delay 0.2 -- without this the value was sometimes "Loading Voices…"
            click menu item "Tom" of menu 1
        end tell
    end tell
end if
quit application "System Preferences"
kantorde
fonte
0

Mudanças diretas para ~/Library/Preferences/com.apple.speech.voice.prefs.plistnão são realmente necessárias se você obtiver as vozes do script bash, que realmente adicionam toda a funcionalidade de linha de comando necessária.

Um script da Apple para alterar a voz padrão para Alex usando vozes seria assim:

on run
    do shell script "voices -d Alex"
end run

Eu prefiro o terminal e, em vez de testar a intrusão da barra de menus poliglota, criei esse shell script (reconhecidamente simples e estúpido) (que usa vozes) para minhas necessidades de troca de idioma. Com isso, tudo o que faço para alterar o idioma padrão é entrar no terminal para digitar speak swedishor speak french. Isso se encaixa perfeitamente no meu fluxo de trabalho. Espero que você encontre uma solução adequada à sua.

# Choose a voice in one of some selected languages
# Use "voices" from https://github.com/mklement0/voices#manual-installation

if [[ $1 = "" ]]
then
    echo "ERROR. No language specified. Type a language as in 'speak hebrew'"
fi
if [[ $1 = "swedish" || $1 = "Swedish" ]]
then
    voices -d Klara
fi
if [[ $1 = "english" || $1 = "English" ]]
then
    voices -d Daniel
fi
if [[ $1 = "american" || $1 = "American" ]]
then
    voices -d Alex
fi
if [[ $1 = "french" || $1 = "French" ]]
then
    voices -d Aurelie
fi
if [[ $1 = "spanish" || $1 = "Spanish" ]]
then
    voices -d Jorge
fi

Salvei nos meus scripts como "speak.command", chmod it + x, e adicionei o alias apropriado ao meu .bash_profile para evocá-lo digitando speak.

Josef Lilljegren
fonte