iOS TextToSpeech:如何获得“it-IT”语言的首字母缩略词和/或罗马数字的正确语音?

时间:2014-09-11 16:20:51

标签: ios text-to-speech

我正在尝试将TTS部分(使用“it-IT”语言)实现到我的iOS应用程序中,这非常简单。但是,由于输入文本AVSynthetizer应该“读”,我有一些问题。

更确切地说,该文本包含一些缩写,例如“a.C.”,“d.C。”或XI,XV等罗马数字拼写错误。

A.C。代表“avanti Cristo”(在基督之前),但读作“a c”。 “XI”也应该是“Undicesimo”(第十一次),但读作“XI”。

作为参考,这是我的示例代码:

AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:@"130 a.C."];
AVSpeechSynthesisVoice *voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"it-IT"];

AVSpeechSynthesizer *synth = [[AVSpeechSynthesizer alloc] init];
synth.delegate = self;
utterance.voice = voice;
utterance.rate = 0.20;


[synth speakUtterance:utterance];

任何人都可以帮助我吗?感谢。

1 个答案:

答案 0 :(得分:1)

文字到语音永远不会完美。

我会创建一个NSString类别

- (NSString *)toItalian;

它接受一个字符串,假设它是意大利语文本,并将其转换为AVSpeechUtterance将以您希望的方式说话的文本。

在该方法中,制作一个可变的self副本,然后替换a.C.以c为例,XI与Undicesimo等等,直到你对结果满意为止。它永远不会是完美的。

作为替代方案,您必须编辑源文本。如果这是一个博物馆的指南,其中文字数量有限且不经常更改,改变原始文本的工作量不会太大。

(作为一则轶事:Mac文本到语音转换识别Elisabeth II并将II改为&#34;第二个&#34;。我认为这是唯一可以做到这一点的情况。)< / p>