10

Мне нравится функция преобразования текста в речь в Mac OS X. Поскольку я не являюсь носителем английского языка, я очень рад всем дополнительным языкам, добавленным с момента выхода Lion. Тем не менее, я использую английский, а также свой родной язык (немецкий). Смена голоса - это немного больно. Это просто требует слишком много шагов, чтобы чувствовать себя комфортно.

Есть ли способ сделать это легко? Я искал ярлыки, возможно выпадающее меню где-то в правом углу, все было бы хорошо.

Поскольку мой поиск не увенчался успехом, я надеюсь найти здесь несколько советов по SuperUser. Большое спасибо!

Роман

4 ответа4

9

Я использовал FastScripts, чтобы назначить ярлык для этого сценария:

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

Вы также можете создать сервис в Automator:

В 10.7 и 10.8 есть ошибка, из-за которой ярлыки для сервисов Automator не всегда работают, пока вы не наведете курсор мыши на меню сервисов в строке меню. WorkflowServiceRunner также может использовать более 100% ЦП во время разговора текста.

Другой вариант - использовать сценарии пользовательского интерфейса для переключения между двумя голосами:

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"

Изменение ключа SelectedVoiceID в com.apple.speech.voice.prefs.plist также работает, но я не знаю, как применить изменения немедленно.

3

Спасибо большое Lauryi.

Я расширил ваш подход сценариев пользовательского интерфейса для правильной работы с немецкими и английскими голосами. Проблема в том, что когда ваш системный язык не английский, все не системные языки скрыты (если в данный момент не выбран). Вы должны выбрать: показать больше голосов .. сначала, чтобы добраться до желаемого языка. Моему коду не хватает элегантности, но он работает. Вот оно (обновлено):

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"
0

Прямые изменения в ~/Library/Preferences/com.apple.speech.voice.prefs.plist самом деле не нужны, если вы получаете голоса bash-script, которые действительно добавляют все необходимые функции командной строки.

Apple Script для изменения стандартного голоса на Алекса с помощью Голоса будет выглядеть так:

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

Я предпочитаю терминал, и вместо того, чтобы тестировать вторжение в строку меню полиглота, я сделал этот (по общему признанию простой-глупый) сценарий оболочки (который использует голоса) для моих потребностей в переключении языка. С этим все, что я делаю, чтобы изменить язык по умолчанию, это зайти в терминал, чтобы набрать speak swedish или speak french . Это отлично вписывается в мой рабочий процесс. Я надеюсь, что вы можете найти решение, которое соответствует вашему.

# 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

Я сохраняю его в своих сценариях как «speak.command», chmod it +x и добавляю соответствующий псевдоним в мой .bash_profile, чтобы вызвать его, набрав speak .

-2

Я написал инструмент строки состояния для этого:

https://github.com/Fredmf/polyglott

По-видимому, он все еще работает в Сьерре

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .