Я пытаюсь получить коды текста в речь (в BCP 47), чтобы преобразовать их в описательную строку для выбора языка, который будет иметь функцию преобразования текста в речь в приложении.
Ожидается -
Арабский (Саудовская Аравия) - китайский язык ar-SA (Китай) - китайский язык z-CN (Китай, Гонконг, Китай) - китайский язык z-HK (Тайвань) - чешский язык z-TW Чешская Республика (Чехия) - cs-CZ
Актуально -
ar-SA (исправлено) cs-CZ (исправлено)
class func getListOfSupportedLanguages() {
for voice in (AVSpeechSynthesisVoice.speechVoices()){
print(voice.language)
let language = Locale.init(identifier: voice.language)
print(language.description)
}
}
Я слежу за этим полезным сайтом и получаю разные результаты.
https://useyourloaf.com/blog/synthesized-speech-from-text/
@property (strong, nonatomic) NSArray *languageCodes;
@property (strong, nonatomic) NSDictionary *languageDictionary;
@property (strong, nonatomic) AVSpeechSynthesizer *synthesizer;
- (NSArray *)languageCodes
{
if (!_languageCodes)
{
_languageCodes = [self.languageDictionary keysSortedByValueUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
}
return _languageCodes;
}
// Map between language codes and locale specific display name
- (NSDictionary *)languageDictionary
{
if (!_languageDictionary)
{
NSArray *voices = [AVSpeechSynthesisVoice speechVoices];
NSArray *languages = [voices valueForKey:@"language"];
NSLocale *currentLocale = [NSLocale autoupdatingCurrentLocale];
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
for (NSString *code in languages)
{
dictionary[code] = [currentLocale displayNameForKey:NSLocaleIdentifier value:code];
}
_languageDictionary = dictionary;
}
return _languageDictionary;
}