0

我制作了一个使用Openears框架来读出一些文本的应用程序。但我没有使用任何Openears'语音识别/语音合成功能,只是语音对话功能。我的应用程序被苹果拒绝,告诉应用程序请求使用麦克风的权限,而该应用程序没有任何此类功能。以下是来自苹果的拒绝信息:

During review we were prompted to provide consent to use the microphone, however, we were not able to find any features or functionality that use the microphone for audio recording.

The microphone consent request is generated by the use of either AVAudioSessionCategoryRecord or AVAudioSessionCategoryPlayAndRecord audio categories. 

If you do not intend to record audio with your application, it would be appropriate to choose the AVAudioSession session category that fits your application's needs or modify your app to include audio-recording features.

For more information, please refer to the Security section of the iOS SDK Release Notes for iOS 7 GM Seed.

我已经搜索了消息中提到的应用程序AVAudioSessionCategoryRecordAVAudioSessionCategoryPlayAndRecord音频类别,但找不到任何内容。如何禁用提示允许使用麦克风?

4

2 回答 2

1

您的应用程序被拒绝,因为您不需要麦克风功能,默认情况下会打开使用麦克风功能的界面,因此为什么会出现用户权限。这些用户权限是不可忽视的,因为苹果增加了用户的安全功能,以便他们可以更好地控制他们希望他们的应用程序能够做什么。如果您必须使用 OpenEars 音频管理功能进行语音识别,请参阅更新 1,否则请继续使用 iOS 7 上的 Apples Siri 语音合成器的不同解决方案。

在您的情况下,如果您只想读出一些文本,那么您可以使用 iOS7 语音合成器,它与用于创建 Siri 声音的合成器相同。

它很容易设置,我目前正在我的一个项目中使用它来通过语音与用户交互。这是有关如何进行所有设置的快速教程:

语音合成器教程

更新 1

在@halle 发表评论后,我决定为那些必须使用 OpenEars 框架的人更新帖子,他们将只使用 FliteController 文本到语音功能而没有任何类型的 OpenEars 语音识别。

您可以将 FliteController 属性设置为,noAudioSessionOverridesTRUE确保 OpenEars 不会与音频录制流交互,这将阻止弹出麦克风权限警报。

[self.fliteController setNoAudioSessionOverrides:TRUE]

更新 2 根据@Halle 的评论,您不再需要更新 1:

只是从今天的更新 1.65 开始的更新,FliteController 将永远不会自行进行音频会话调用,因此这里没有进一步的拒绝危险,也没有必要设置 noAudioSessionOverrides。

于 2014-01-16T07:53:35.547 回答
1

很抱歉你的应用被拒绝了。要在 OpenEars 中仅使用 TTS 而无需任何与语音识别相关的音频会话管理,请将 FliteController 的属性 noAudioSessionOverrides 设置为 TRUE。这将导致没有音频会话更改/不使用麦克风流。

我会看看我是否可以让这个设置的文档对于只使用 OpenEars 的 FliteController 进行 TTS 的开发人员更加突出。

为了完整起见,有关如何在使用 OpenEars 时大大减少应用程序二进制大小的文档,因为这对您来说也是一个问题:

http://www.politepix.com/forums/topic/slimming-down-your-app/ http://www.politepix.com/openears/support/#Q_How_can_I_trim_down_the_size_of_the_final_binary_for_distribution

编辑:从今天 1.65 版的 OpenEars 及其插件开始,如果您只使用 FliteController,则不会有被拒绝的危险,因为 TTS 类不再自行调用音频会话。感谢您对此的提醒,再次抱歉,您因此被拒绝。

于 2014-01-16T09:04:08.780 回答