Mac OS X - Швидка зміна голосів для тексту в мовлення


10

Мені подобається функція Speech у мові Mac OS X. Оскільки я не є носієм англійської мови, я дуже радий, що всі додаткові мови додаються з моменту виходу Lion. Однак я користуюсь англійською, а також рідною мовою (німецькою). Зміна голосів трохи болить. Це просто вимагає занадто багато кроків, щоб було зручно.

Чи є спосіб зробити це легким? Я шукав ярлики, можливо, спадне меню десь у правому куті, все було б добре.

Оскільки мій пошук виявився невдалим, я сподіваюся знайти тут поради щодо SuperUser. Дуже дякую!

cu Роман


Я на Mac і створив Talkie: розширення браузера з текстовим мовленням з автоматичним виявленням мови. Це все з відкритим кодом, але деякі функції є в комерційному розповсюдженні Talkie Premium. Найпростіше використовувати у браузері (за допомогою клавіш швидкого доступу), але ви можете використовувати його з будь-якої програми через буфер обміну (преміум). Можливо, вам допоможуть! joelpurra.com/projects/talkie
Joel

Відповіді:


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, де ярлики для служб Автоматизатора не завжди працюють, доки не наведіть курсор миші на сервіси на панелі меню. 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 також працює, але я не знаю, як застосувати зміни негайно.


Вау, велике спасибі за цю дуже детальну відповідь та за те, що показали мені так багато варіантів. Сервіс Automator для мене чудово працює, до того ж тепер я знаю про ці послуги. Можливо, я хотів би додати і деякі інші :)

1
Чудові речі. Станом на OSX 10.10: Щоб ~/Library/Preferences/com.apple.speech.voice.prefs.plistнегайно застосувати зміни , запустіть pkill com.apple.speech.speechsynthesisd, що змусить систему автоматично перезапустити процес, після чого зміни підбираються.
mklement0

1
На моїй ОС X 10.10.4 сценарій інтерфейсу працює лише в тому випадку, якщо я вставляю рядок "активувати" між рядком 1 та 2. В іншому випадку я отримую помилку: „Група вкладки 1 вікна 1 процесу \„ Системні налаштування \ "„ не може читайте ... Будь-які пропозиції, чому це стосується мене, а не інших?
Йенс Вірт

3

Дуже дякую Лаурі.

Я розширив ваш сценарій інтерфейсу інтерфейсу для належної роботи з німецькими та англійськими голосами. Проблема полягає в тому, що коли ваша системна мова не є англійською, всі несистемні мови приховані (якщо їх наразі не вибрано). Ви повинні вибрати: показати більше голосів .. спочатку перейти до потрібної мови. У моєму коді бракує трохи елегантності, але працює. Ось це (оновлено):

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не дуже потрібні, якщо ви отримуєте голосовий скрипт Voices, який дійсно додає всі необхідні функції командного рядка.

Apple Script для зміни стандартного голосу на Alex за допомогою Voices просто виглядатиме так:

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 це + x, і додаю відповідний псевдонім до мого .bash_profile, щоб викликати його, ввівши його speak.


-2

Я написав для цього інструмент рядка стану:

https://github.com/Fredmf/polyglott

Мабуть, він все ще працює в Сьєррі


1
Чи можете ви розширити свою відповідь, щоб включити приклад використання випадку, який би вирішив питання ОП. Будь ласка , см meta.superuser.com/questions/5329 / ...
Bürgi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.