0

我正在使用 Here SDK 在 Xcode 中开发一个 iOS 项目。我正在使用高级版(v3.17)。在我的应用程序的“设置”屏幕中,用户可以选择 SDK 正在使用的“语音”(我通过NMAVoiceCatalog voicePackages属性获取该列表。)

当用户选择一个声音时,我想播放一个小句子(例如“立即转身”),这样他们就可以立即得到反馈,如果他们喜欢那个声音。

现在,我知道NMAAudioManager有一种方法playOutput可以播放预先录制的声音文件或 tts 字符串。太好了,但现在我的问题是:

如何确保该NMAAudioManager.sharedInstance().play(方法以相同的声音播放NMANavigationManager

请务必注意此处的 tts 语音和预录语音之间的区别。

预录的声音 我想这是一个预录的 mp3 或 wav 文件的资源包。我只需要知道我可以使用的一个或多个声音文件的 url。例如,句子“turn right now”的声音文件。我想所有语言的所有声音的文件名都是相同的(虽然不确定)。是否有可用声音文件及其名称的列表?或者您能否给我一些声音文件名(以及 SDK 中的 URL),以便我可以通过 NMAAudioManager 将它们作为测试声音播放?

tts voices 对于这些声音,我可以用每种支持的语言创建一个句子并将其提供给NMAAudioManager.sharedInstance().play(方法。我会为那个句子创建一个“NMATTSAudioOutput”。但是,我需要正确设置该AVSpeechSynthesisVoice“NMATTSAudioOutput”实例的语音属性。正确的意思是AVSpeechSynthesisVoiceNMANavigationManager 正在使用的相同。我试过使用AVSpeechSynthesisVoice(language: voicePackage.languageCode),但这并没有提供与使用相同的 AVSpeechSynthesisVoice NMANavigationManager。例如 English UK tts voicePackage 与 English US 一起播放AVSpeechSynthesisVoice。你能和我分享一下如何选择NMANavigationManager属性吗?AVSpeechSynthesisVoiceNMAVoicePackage

4

1 回答 1

1

预先录制的声音

获取样本的最佳方式是使用 HERE SDK。因为将来可以更改语音服务 URL。从目录安装语音包 (id:83101) 并在您的应用目录中找到 wav 文件:

/Documents/heremaps/diskcache/voices/es-MX_male/mexican_male/g5turns_left_002e

HERE SDK 使用 wav 文件内容初始化 AVAudioPlayer 并调用 play() 函数。

TTS 语音

NMANavigationManager 使用类似的东西:

NMATTSAudioOutput *output = [NMATTSAudioOutput audioOutputWithText:text];
output.source = NMAAudioOutputSourceGuidance;
output.voice = [AVSpeechSynthesisVoice voiceWithLanguage:self.voicePackage.languageCode];
output.speechRate = AVSpeechUtteranceDefaultSpeechRate;
output.pitchMultiplier = 1.0;

[[NMAAudioManager sharedAudioManager] playOutput:output];

请注意,幕后有许多 lua 脚本和算法,使语音指导更加流畅和先进。

于 2021-04-27T22:55:28.227 回答