Xcode Objective- C: преобразование текста в речь всегда на английском языке sh, даже если iPhone установлен на другой язык - PullRequest
0 голосов
/ 11 марта 2020

У меня есть этот код, чтобы приложение читало текст

self->myUtterance = [AVSpeechUtterance speechUtteranceWithString:@"Ciao come stai?"];
self->myUtterance.rate = 0.5;
self-> myUtterance.pitchMultiplier = 1.5;
//self-> myUtterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"it-IT"];
self->synth = [[AVSpeechSynthesizer alloc] init];
[self->synth speakUtterance:self->myUtterance];

Я прочитал, что «по умолчанию AVSpeechSynthesizer будет говорить голосом, основываясь на текущих языковых предпочтениях пользователя». но это не работает.

Действительно, даже если мой iPhone полностью настроен на итальянский язык и регион, голос звучит на английском sh.

Если я удалю комментарий к этой строке кода

//self-> myUtterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"it-IT"];

Тогда голос будет на итальянском, но я sh говорю, что язык автоматически устанавливается на основе языковых предпочтений пользователя.

1 Ответ

0 голосов
/ 11 марта 2020

Вы можете использовать [[[NSBundle mainBundle] preferredLocalizations] firstObject], чтобы найти текущий язык приложения.

(Если оно nil или если ваше приложение не локализовано, вы можете использовать [[NSLocale currentLocale] languageCode] вместо этого, но это не заботится о язык, указанный в настройках, каждый раз, когда пользователь изменяет язык приложения, но не для всех устройств)

Таким образом, вы можете указать язык с помощью [AVSpeechSynthesisVoice voiceWithLanguage:] и убедиться, что вы говорите на языке приложения .

В противном случае вы можете позволить пользователю выбрать разговорный язык.

...