我正在尝试将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];
任何人都可以帮助我吗?感谢。
答案 0 :(得分:1)
文字到语音永远不会完美。
我会创建一个NSString类别
- (NSString *)toItalian;
它接受一个字符串,假设它是意大利语文本,并将其转换为AVSpeechUtterance将以您希望的方式说话的文本。
在该方法中,制作一个可变的self副本,然后替换a.C.以c为例,XI与Undicesimo等等,直到你对结果满意为止。它永远不会是完美的。
作为替代方案,您必须编辑源文本。如果这是一个博物馆的指南,其中文字数量有限且不经常更改,改变原始文本的工作量不会太大。
(作为一则轶事:Mac文本到语音转换识别Elisabeth II并将II改为&#34;第二个&#34;。我认为这是唯一可以做到这一点的情况。)< / p>