Наличие установленных голосов для использования AVSpeechSynthesis в iOS - PullRequest
3 голосов
/ 07 февраля 2020

Я хотел бы иметь возможность проверить, какие голоса из текста в речь доступны для моего приложения iOS для использования с AVSpeechSynthesis. Создать список установленных голосов легко, но Apple делает некоторые из них запрещенными для использования приложениями, и я хотел бы знать, какие именно.

Например, рассмотрим следующий тестовый код ( swift 5.1):

import AVFoundation

...

func voiceTest() {
    let speechSynthesizer = AVSpeechSynthesizer()
    let voices = AVSpeechSynthesisVoice.speechVoices()
    for voice in voices where voice.language == "en-US" {
        print("\(voice.language) - \(voice.name) - \(voice.quality.rawValue) [\(voice.identifier)]")
        let phrase = "The voice you're now listening to is the one called \(voice.name)."
        let utterance = AVSpeechUtterance(string: phrase)
        utterance.voice = voice
        speechSynthesizer.speak(utterance)
    }
}

Когда я звоню voiceTest(), вывод консоли таков:

en-US - Nicky (Enhanced) - 2 [com.apple.ttsbundle.siri_female_en-US_premium]
en-US - Aaron - 1 [com.apple.ttsbundle.siri_male_en-US_compact]
en-US - Fred - 1 [com.apple.speech.synthesis.voice.Fred]
en-US - Nicky - 1 [com.apple.ttsbundle.siri_female_en-US_compact]
en-US - Samantha - 1 [com.apple.ttsbundle.Samantha-compact]
en-US - Alex - 2 [com.apple.speech.voice.Alex]

Некоторые голоса говорят реальным голосом, тогда как некоторые говорят вместо этого в голосе по умолчанию. В моем случае и Nicky (com.apple.ttsbundle.siri_female_en-US_premium) и Alex (com.apple.speech.voice.Alex) указаны как высококачественные, но вместо этого звучат как низкое качество по умолчанию, Samantha, когда выбрано.

Я знаю, что Apple сказала, что голоса Siri недоступны для использования в сторонних приложениях. Когда я вручную загружаю Samantha (High Quality) на свой iPhone через Настройки, он появляется в списке, и я могу его использовать. Возможно, Алекс - это просто высококачественный мужской голос Сири, хотя Аарон может показаться некачественным голосом Сири, основанным на его идентификаторе (com.apple.ttsbundle.siri_male_en-US_compact)? И именно поэтому Алекс и Ники - единственные, кому недоступны? Так что, если у меня есть приложение, специально исключившее его, оно сгенерирует настоящий список доступных голосов? Было бы неплохо иметь некоторую ясность.

...