Этот модуль предоставляет доступ к компоненту синтеза речи OS X.
Функции и методы синтеза речи обеспечивают доступ к возможностям преобразования текста в речь OS X и облегчают генерацию звукового вывода как в активное аудиоустройство, так и в файл формата AIFF.
Обсуждение встраивания команд в текст, который необходимо произнести, можно найти по адресу https://developer.apple.com/library/mac/documentation/UserExperience/Conceptual/SpeechSynthesisProgrammingGuide/FineTuning/FineTuning.html#//apple_ref/doc/uid/TP40004365-CH5-SW6. Оно несколько устарело и специфично для голосов более старого стиля MacinTalk, но все еще содержит некоторую информацию, относящуюся и к более современным голосам высокого качества, в своем обсуждении встроенных команд.
Возвращает таблицу, содержащую различные свойства, описывающие и определяющие указанный голос.
Параметры
voice - имя голоса, для которого необходимо найти атрибуты
Возвращает
таблица, содержащая пары ключ-значение, которые описывают указанный голос. Эти атрибуты могут включать (но не ограничиваются) информацию о распознанных символах, образце текста, поле и т. д.
Примечания
Все имена, обнаруженные до сих пор, следуют этому шаблону для своего полного имени: com.apple.speech.synthesis.voice.*name*. Вы можете указать этот суффикс или нет, как вам нравится, при указании имени голоса.
Возвращает список установленных голосов для синтеза речи.
Параметры
full - необязательный булевый флаг, указывающий, следует ли возвращать полные внутренние имена или сокращенные версии. По умолчанию false.
Возвращает
массив доступных имен голосов.
Примечания
Все имена, обнаруженные до сих пор, следуют этому шаблону для своего полного имени: com.apple.speech.synthesis.voice.*name*. Этот префикс обычно подавляется, если вы не передаете true.
Возвращает имя текущего выбранного голоса по умолчанию для пользователя. Этот голос выбран в Системных настройках для Диктовки и речи в качестве Системного голоса.
Параметры
full - необязательный булевый флаг, указывающий, следует ли возвращать полное внутреннее имя или сокращенную версию. По умолчанию false.
Возвращает
имя системного голоса.
Примечания
Все имена, обнаруженные до сих пор, следуют этому шаблону для своего полного имени: com.apple.speech.synthesis.voice.*name*. Этот префикс обычно подавляется, если вы не передаете true.
Создает новый объект синтеза речи для использования Hammerspoon.
Параметры
voice - необязательная строка, определяющая голос, который синтезатор должен использовать для генерации речи. По умолчанию - системный голос.
Возвращает
объект синтеза речи или nil, если система не смогла создать новый синтезатор.
Примечания
Все имена, обнаруженные до сих пор, следуют этому шаблону для своего полного имени: com.apple.speech.synthesis.voice.*name*. Вы можете указать этот суффикс или нет, как вам нравится, при указании имени голоса.
Вы можете изменить голос позже с помощью метода hs.speech:voice.
Возвращает значение, указывающее, приостановлен ли в настоящее время синтезатор.
Параметры
None
Возвращает
True или false, указывающие, приостановлен ли в настоящее время синтезатор. Если возникла ошибка, возвращает nil.
Примечания
Если при получении этого значения произошла ошибка, подробности будут записаны в системные журналы, которые можно просмотреть с помощью приложения «Консоль». Вы также можете записывать такие сообщения в консоль Hammerspoon, установив уровень протоколирования модуля как минимум в Информация (это можно сделать с помощью следующей или аналогичной команды: hs.speech.log.level = 3. См. hs.logger для получения дополнительной информации).
Возвращает значение, указывающее, произносит ли в настоящее время синтезатор, либо в аудиоустройство, либо в файл.
Параметры
None
Возвращает
True или false, указывающие, произносит ли в настоящее время синтезатор речь. Если произошла ошибка, возвращает nil.
Примечания
Если при получении этого значения произошла ошибка, подробности будут записаны в системные журналы, которые можно просмотреть с помощью приложения «Консоль». Вы также можете записывать такие сообщения в консоль Hammerspoon, установив уровень протоколирования модуля как минимум в Информация (это можно сделать с помощью следующей или аналогичной команды: hs.speech.log.level = 3. См. hs.logger для получения дополнительной информации).
Получает или устанавливает модуляцию тона для голоса синтезатора.
Параметры
modulation - необязательное число, указывающее модуляцию тона для синтезатора.
Возвращаемое значение
Если параметр не указан, возвращает текущее значение; в противном случае возвращает объект синтезатора. Возвращает nil, если произошла ошибка.
Примечания
Модуляция тона выражается как число с плавающей запятой в диапазоне от 0,000 до 127,000. Эти значения соответствуют значениям нот MIDI, где 60,000 соответствует средней ноте C на фортепианной шкале. Наиболее полезные тона речи находятся в диапазоне от 40,000 до 55,000. Значение модуляции тона 0,000 соответствует монотонному произношению, при котором вся речь генерируется на частоте, соответствующей тону речи. При значении тона речи 46,000, модуляция тона 2,000 означает, что самый широкий возможный диапазон тонов, соответствующих фактической частоте сгенерированного текста, будет составлять от 44,000 до 48,000.
Если при получении или установке этого значения произошла ошибка, подробности будут записаны в системный журнал, который можно просмотреть с помощью приложения Консоль. Вы также можете записывать такие сообщения в консоль Hammerspoon, установив уровень ведения журнала модуля как минимум на Информация (это можно сделать с помощью следующей или аналогичной команды: hs.speech.log.level = 3. См. hs.logger для получения дополнительной информации).
Возвращает фонемы, которые будут произнесены, если текст будет синтезирован.
Параметры
text - текст, который нужно разбить на фонемы.
Возвращаемое значение
текст, преобразованный в серию фонем, которые синтезатор использует для данного текста, если он будет синтезирован.
Примечания
Этот метод возвращает только фонетческое представление текста, если выбран голос MacinTalk. Более современные голоса с высоким качеством не используют фонетческое представление, и если этот метод используется, будет возвращена пустая строка.
Вы можете изменить фонетческое представление и передать его в hs.speech:speak, если обнаружите, что стандартная интерпретация неверна. Вам необходимо установить режим ввода в фонетный, добавив в текст префикс "[[inpt PHON]]".
Конкретные фонетческие символы, распознаваемые данным голосом, можно запросить, изучив массив, возвращаемый hs.speech:phoneticSymbols, после установки соответствующего голоса.
Возвращает массив фонетческих символов, распознаваемых синтезатором для текущего голоса.
Параметры
Ничего
Возвращаемое значение
Для голосов MacinTalk этот метод возвращает массив распознанных символов для текущего выбранного голоса. Для современных голосов с высоким качеством или если произошла ошибка, возвращает nil.
Примечания
Каждый элемент в массиве фонем, возвращаемых hs.speech:phonemes, или который вы должны использовать для этого звука при создании фонетной строки самостоятельно, содержит следующие ключи:
Символ - текстовое представление этой фонемы при возврате hs.speech:phonemes или которое вы должны использовать для этого звука при создании фонетной строки самостоятельно.
Код операции - числовой код операции, переданный в обработчик для сообщения "willSpeakPhoneme", соответствующего этой фонеме.
Пример - пример слова, которое содержит звук, который представляет фонема.
HiliteEnd - позиция символа в Примере, где звук этой фонемы начинается.
HiliteStart - позиция символа в Примере, где звук этой фонемы заканчивается.
Только более старые голоса стиля MacinTalk поддерживают фонетческий текст. Более современные голоса с высоким качеством не отображаются фонетически и вернут nil для этого метода.
Если при получении этого значения произошла ошибка, подробности будут записаны в системный журнал, который можно просмотреть с помощью приложения «Консоль». Вы также можете записывать такие сообщения в консоль Hammerspoon, установив уровень ведения журнала модуля как минимум на «Информация» (это можно сделать с помощью следующей или аналогичной команды: hs.speech.log.level = 3. См. hs.logger для получения дополнительной информации).
Получает или устанавливает основной тон для голоса синтезатора.
Параметры
pitch - необязательное число, указывающее основной тон для синтезатора.
Возвращаемое значение
Если параметр не указан, возвращает текущее значение; в противном случае возвращает объект синтезатора. Возвращает nil, если произошла ошибка.
Примечания
Типичные частоты голоса варьируются от примерно 90 герц для низкого мужского голоса до, возможно, 300 герц для высокого голоса ребенка. Эти частоты соответствуют приблизительным значениям тона в диапазонах соответственно от 30,000 до 40,000 и от 55,000 до 65,000.
Если при получении или установке этого значения произошла ошибка, подробности будут записаны в системный журнал, который можно просмотреть с помощью приложения Консоль. Вы также можете записывать такие сообщения в консоль Hammerspoon, установив уровень ведения журнала модуля как минимум на Информация (это можно сделать с помощью следующей или аналогичной команды: hs.speech.log.level = 3. См. hs.logger для получения дополнительной информации).
Получает или устанавливает скорость речи синтезатора (слов в минуту).
Параметры
rate - необязательное число, указывающее скорость речи для синтезатора.
Возвращаемое значение
Если параметр не указан, возвращает текущее значение; в противном случае возвращает объект синтезатора.
Примечания
Диапазон поддерживаемых скоростей не определен в рамках фреймворка синтеза речи; но синтезатор может реагировать только на ограниченный диапазон скоростей речи. Средняя скорость человеческой речи составляет от 180,0 до 220,0 слов в минуту.
Возвращает объект синтезатора. Возвращает nil, если произошла ошибка.
Примечания
Этот метод сбросит синтезатор до его исходного состояния, включая тон, модуляцию, громкость, скорость и т. д.
Изменения вступают в силу немедленно, если их запросить, но не повлияют на текущий процесс синтеза.
Если при получении или установке этого значения произошла ошибка, подробности будут записаны в системный журнал, который можно просмотреть с помощью приложения «Консоль». Вы также можете записывать такие сообщения в консоль Hammerspoon, установив уровень ведения журнала модуля как минимум на «Информация» (это можно сделать с помощью следующей или аналогичной команды: hs.speech.log.level = 3. См. hs.logger для получения дополнительной информации).
Устанавливает или удаляет функцию обратного вызова для синтезатора.
Параметры
fn - функция, которая устанавливается в качестве обратного вызова для этого синтезатора речи. Если предоставленное значение равно nil, любая существующая функция обратного вызова удаляется.
Возвращает
объект синтезатора
Примечания
Функция обратного вызова должна принимать от 3 до 5 аргументов и не должна возвращать ничего. Первые два аргумента всегда будут самим объектом синтезатора и строкой, указывающей действие, которое вызвало обратный вызов. Значение этой строки также определяет оставшиеся аргументы следующим образом:
"willSpeakWord" - Отправляется непосредственно перед тем, как синтезированное слово произносится через устройство вывода звука.
предоставляет 3 дополнительных аргумента: startIndex, endIndex и полный текст, который произносится.
startIndex и endIndex могут использоваться как string.sub(text, startIndex, endIndex) для получения конкретного произносимого слова.
"willSpeakPhoneme" - Отправляется непосредственно перед тем, как синтезированный фонема произносится через устройство вывода звука.
это сообщение обратного вызова будет появляться только при использовании голосов Macintalk; современные голоса с более высоким качеством не основаны на фонетике и не будут генерировать это сообщение.
opcode может быть связан с конкретной фонемой, найдя его в таблице, возвращаемой hs.speech:phoneticSymbols.
"didEncounterError" - Отправляется, когда синтезатор речи обнаруживает ошибку в синтезируемом тексте.
предоставляет 3 дополнительных аргумента: индекс в исходном тексте, где произошла ошибка, произносимый текст и сообщение об ошибке.
Особое примечание: мне никогда не удавалось сгенерировать это сообщение обратного вызова, даже с некорректными встроенными последовательностями команд, поэтому... ищу валидацию кода или исправления. Отправьте сообщение об ошибке, если у вас есть предложения.
"didEncounterSync" - Отправляется, когда синтезатор речи обнаруживает встроенную команду синхронизации.
предоставляет 1 дополнительный аргумент: номер синхронизации, предоставленный в тексте.
Номер синхронизации может быть встроен в текст, который нужно произнести, включив [[sync #]] в текст, где вы хотите, чтобы произошёл обратный вызов. Номер ограничен 32 битами и может быть представлен в десятичной или шестнадцатеричной системе счисления (префикс 0x).
"didFinish" - Отправляется, когда синтезатор речи завершает произнесение через устройство вывода звука.
предоставляет 1 дополнительный аргумент: логический флаг, указывающий, завершил ли синтезатор работу успешно (true) или был остановлен преждевременно с hs.speech:stop (false).
Получает или устанавливает использование синтезатором окна обратной связи.
Параметры
flag - необязательное логическое значение, указывающее, должен ли синтезатор использовать окно обратной связи или нет. По умолчанию false.
Возвращает
Если параметр не указан, возвращает текущее значение; в противном случае возвращает объект синтезатора.
Примечания
Особое примечание: Я не уверен, где фактически происходит визуальная обратная связь — я не смог найти окно обратной связи для синтеза в 10.11; однако метод определен и не помечен как устаревший, поэтому я включаю его в модуль. Если у кого-то есть дополнительная информация, пожалуйста, создайте сообщение об ошибке, и документация будет обновлена.
Получает или устанавливает активный голос для синтезатора.
Параметры
full - необязательный логический параметр, указывающий, хотите ли вы получить полное внутреннее имя голоса или сокращенную версию. По умолчанию false.
voice - необязательная строка, указывающая имя голоса, на который нужно переключить синтезатор.
Возвращает
Если параметр не указан (или параметр имеет логическое значение), возвращает текущее значение; в противном случае возвращает объект синтезатора или nil, если голос не удалось изменить по какой-либо причине.
Примечания
Все встреченные имена до сих пор следуют этому шаблону для своего полного имени: com.apple.speech.synthesis.voice.*name*. Вы можете указать этот суффикс или нет, как вам нравится, при указании имени голоса.
Голос нельзя изменить, когда синтезатор в настоящее время выдает выход.
Если вы измените голос, когда синтезатор приостановлен, текущий синтез будет прерван, и голос будет изменён.
volume - необязательное число от 0,0 до 1,0, указывающее громкость синтезатора.
Возвращает
Если параметр не указан, возвращает текущее значение; в противном случае возвращает объект синтезатора.
Примечания
Единицы громкости находятся на шкале, линейной по отношению к амплитуде или напряжению. Удвоение воспринимаемой громкости соответствует удвоению громкости.