Сочетания текста в речь на двух языках

13

Я часто использую Mac для преобразования текста в речь. В разделе «Настройки»> «Речь»> «Текст в речь» я также установил «Ключ» для быстрого доступа.

Поскольку я также хочу, чтобы Text to Speech читал по-немецки, а OS Lion предлагает голоса для других языков, я хотел бы иметь второй ярлык для немецкого языка.

Кто-нибудь знает, где я могу установить это? Или это единственный способ постоянно изменять системный голос, прежде чем я хочу, чтобы текст на немецком языке читался? (А затем сбросить голос на Алекса для английских текстов)? А что на счет французского текста?

Какие варианты существуют для этой общей проблемы?

Джозеф
источник
2
Вы пробовали функциональность, уже встроенную в OS X?
Nohillside

Ответы:

18

Скажи как ...

Вы можете использовать sayкоманду с другими голосами OS X, чтобы получить разные языки. Используйте Thomasголос, чтобы получить французское произношение или Yannickдля немецкого языка.

В этом примере я буду использовать Томас и французский, так как это то, что я знаю, но Yannickдолжно работать и для немецкого текста.

Попробуйте следующую команду в « Приложения»> «Служебные программы»> «Terminal.app» :

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

Если это приемлемо, вы можете sayзаключить команду в службу Automator; что мы будем делать дальше.

Автоматизатор Сервис

Чтобы создать службу Automator:

  1. Запустить Automator.app
  2. Создать новый Quick Action (ранее Сервис )
  3. Добавьте Run AppleScript действия
  4. Скопируйте и вставьте в AppleScript ниже:

    on run {input, parameters}
        do shell script "say -v Thomas " & (quoted form of (input as string))
        return input
    end run
    
  5. Сохранить услугу как говорить по-французски

Автоматизатор службы поддержки

Чтобы воспользоваться услугой:

  1. Выделите текст в TextEdit или Safari
  2. Control + Нажмите, чтобы открыть контекстное меню
  3. Выберите Услуги> Говорите по-французски

И вуаля ! Другие языки и голоса доступны.

Этот подход Automator позволяет вам поддерживать голос по умолчанию на вашем компьютере. Позволяя читать выбранный текст альтернативным голосом.

Доступные голоса и языки

Вы можете перечислить доступные голоса и связанные с ними языки с помощью команды:

say -v ?

Доступные голоса могут меняться между версиями macOS. В macOS 10.13 команда возвращает:

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
Исходя из моей (очень субъективной) оценки как носителя французского языка, я бы сказал, что голос очень хороший. Я только что присоединился к этому сайту, чтобы высказать ваш ответ!
Расслабленный
2
отличный ответ! Я думаю, что это легко обобщается и на другие языки. Каким будет в этом случае имя рассказчика? :-)
Муравей
Многие другие голоса и языки доступны; см. раздел « Другие языки ».
Грэм Милн
1
Я обновил ответ; Я считаю, что Сервис теперь называется Quick Action в macOS 10.14.
Грэм Милн
Есть ли способ выбрать голос Сири?
SuperSpy
6

Вид старого поста и, возможно, вы уже нашли решение. Один из способов упростить это с Automator.

Откройте Automator, выберите «Служба», «Служба получит выделенный текст», перетащите действие «Speak Text», чтобы создать рабочий процесс, и выберите «Голос» (например, «Ryan Speaking»). Сохранить

Повторите с разными голосами.

(Список служб можно редактировать / очищать с помощью приложения Service Scrubber и частично в Системных настройках> Клавиатура> Сочетания клавиш> Службы)

Изменить: Теперь, когда у вас есть два или более Голоса в Меню Сервисов, вы можете перейти к: Системные настройки> Клавиатура> Сочетания клавиш> Сочетания клавиш приложения и создать новый ярлык для каждого голоса.

Пока что на моем компьютере это работает следующим образом (ОС 10.6.8): Системный голос по умолчанию: Ярлык Райана (Infovox), выбранный в Speech Pref to Control + S. Это запускает и останавливает текст на английском языке.

Немецкий голос мне назначил Control + Y (голос Янника из Lion OS). Ctrl + Y запускает немецкий голос для выбранного текста на немецком языке; который можно остановить, дважды щелкнув по основному ярлыку «Пуск / Стоп», здесь Control + S + S. Причина двойного заключается в том, что нажатие на него один раз запускает английский голос вместо немецкого. Это лучшее, что я мог придумать. Убедитесь, что ярлыки не конфликтуют с другими ярлыками. Вы заметите, что дополнительный ярлык позволяет вам запускать несколько голосовых потоков, разговаривая друг с другом, а также системный голос по умолчанию, который повышает нагрузку на процессор, но не проблема, если кто-то помнит, чтобы остановить речь, дважды выполнив ярлык для голос по умолчанию.

Не уверен, что это работает в масштабе всей системы, но работает в моих браузерах, Mail и приложении BookReader, которое я использую.

Редактирование 2: Я заметил, что при активации вторичного текста в речь через службу Automator процесс Automator Runner увеличивает нагрузку на процессор до 100% с ускорением вентиляторов. Не уверен, что есть решение для этого.

Mikofox
источник
1
Можете ли вы добавить скриншот рабочего процесса Automator? С Automator это обычно легче понять, чем текстовое описание
nohillside
2

Вы также можете установить системный голос на французский.

Перейдите в « Системные настройки»> «Диктовка и речь»> «Текст в речь» и, например, установите системный голос Thomas.

Потом:

  1. Выберите любой текст в любом приложении
  2. Control+ Нажмите, чтобы открыть контекстное меню
  3. Выберите «Речь»> «Начать речь»

Существует также возможность установить ярлык, так что вы можете просто выбрать любой текст и нажать ярлык, чтобы начать говорить по-французски.

Артур
источник
2

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

https://github.com/Fredmf/polyglott

Фред Флюгге
источник
Привет, добро пожаловать, чтобы спросить другого. Пожалуйста, объясните немного, что делает ваш инструмент и как. Благодарность!
Хайме Санта-Крус
Спасибо за создание этого. Я нашел это самый полезный инструмент на этой странице.
SuperSpy
2
  1. Запустить Automator.app

  2. Создать новый сервис

  3. Добавить Speak Текст действия

  4. Выберите Саманту

  5. Сохранить сервис как SpeakSamantha

Добавить действие Speak Text

Настройте сочетание клавиш для службы

  1. Настройки открытой системы

  2. Выбрать клавиатуру

  3. Выберите ярлыки

  4. Выберите Услуги

  5. Создать ярлык, Ctrl + Alt + 1 для SpeakSamantha

Создать ярлык для SpeakSamantha

Чтобы воспользоваться услугой

  1. Открыть браузер

  2. Выберите некоторые английские тексты

  3. Нажмите Ctrl + Alt + 1

Чтобы остановить речь (Метод 1)

  1. Нажмите Alt + ESC

Чтобы остановить речь (Метод 2)

  1. Нажмите на значок вращающейся шестерни в строке меню.

  2. Нажмите

Нажмите на значок вращающейся шестерни в строке меню.

Добавить второй голос

  1. Повторите процесс выше, добавив следующие незначительные изменения

  2. Выберите второй голос, например, Анна , немецкий голос

  3. Сохранить сервис как SpeakAnna

  4. Создайте сочетание клавиш, Ctrl + Alt + 2 для SpeakAnna

Известная небольшая проблема: не нажимайте ярлык еще раз, прежде чем закончить речь или закончить речь. В противном случае вы получите сообщение об ошибке, подобное следующему.

введите описание изображения здесь

ffmaer
источник
1

Использование пользовательского сервиса со стандартным Speak Textдействием для произнесения выбранного текста определенным альтернативным голосом имеет один существенный недостаток, как подробно описано в ответе Mikofox :

Вы не можете легко остановить воспроизведение, как вы можете с помощью встроенного сервиса TTS, просто нажав сочетание клавиш снова.

Есть два решения :

Раскрытие информации: я создал расфасованные сервисы и voicesCLI

  • Вместо этого создайте пользовательский сервис с Run Shell Scriptдействием , в котором вы используете sayCLI , который позволяет реализовать переключение воспроизведения (остановка речи, если она вызывается во время разговора из предыдущего вызова)

    • Ниже приведена простая реализация, которая работает, но она не учитывает какие-либо пользовательские скорости речи (слов в минуту), которые вы, возможно, настроили для отдельных голосов в Системных настройках.
    • Решение, которое учитывает обычные уровни речи, требует немного больше работы; Вы можете найти предварительно упакованный сервис здесь ; или используйте прямую ссылку для скачивания (останется в курсе) ..
  • В качестве альтернативы, создайте сервис, который переключает голос по умолчанию по требованию , который затем позволяет вам использовать встроенный сервис TTS с его функцией переключения воспроизведения.

    • Хотя OSX не предлагает никакого программного способа изменить голос по умолчанию, вы можете использовать предварительно упакованный сервис, построенный на voicesCLI :
      следуйте инструкциям здесь или используйте прямую ссылку для загрузки (будет оставаться актуальной).

Простая реализация сервиса с переключением воспроизведения :

Как уже говорилось, это не учитывает пользовательские скорости разговора, настроенные для выбранного голоса.

  • Создать новый сервис в Automator
  • Оставьте настройки по умолчанию (сервис получает текст в любом приложении)
  • Добавьте Run Shell Scriptдействие и вставьте следующее:
#  ------- 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
источник
0

Как упоминал Mikofox, вы можете создать службу Automator для произнесения текста:

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

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

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

Другой вариант - просто запустить что-то вроде pbpaste | say -v kyoko.

LRI
источник
1
Есть ли способ выбрать голос Сири в ваших инструментах? Спасибо за создание голосовой утилиты переключения по умолчанию!
SuperSpy
Этот метод превосходен! Благодарность! echo 'Guten Tag. Wie geht es?' | pbcopy && pbpaste | say -v Anna
Владимир Вуканац