2014-01-16 62 views
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音頻類別。如何禁用允許使用麥克風的提示?

回答

1

您的應用程序因爲不需要麥克風功能而被拒絕,因此默認情況下會使用麥克風功能界面,因此用戶權限出現了。這些用戶權限是不允許的,因爲蘋果增加了用戶的安全功能,以便他們可以更好地控制他們的應用程序能夠執行的操作。如果您必須使用OpenEars音頻管理功能進行語音識別,請參閱更新1,否則請使用iOS 7上的Apples Siri語音合成器繼續使用不同的解決方案。

在您的情況下,如果您只想讀出一些文本,那麼你可以使用iOS7語音合成器,這是用於創建Siri語音的合成器。

這是很容易設置,我目前正在使用它爲我的項目之一,通過語音與用戶進行交互。下面是關於如何得到它的所有設置的快速教程:

Speech synthesizer tutorial

更新1

@哈雷的評論之後,我決定更新帖子對於那些必須使用OpenEars框架誰將只使用FliteController文本到語音功能,沒有任何OpenEars語音識別。

您可以將FliteController屬性noAudioSessionOverrides設置爲TRUE,以確保OpenEars不會與音頻錄製流進行交互,這將阻止彈出的麥克風權限警報。

[self.fliteController setNoAudioSessionOverrides:TRUE] 

更新2 基於@哈雷的評論,你不再需要做更新1:

只是,今天的更新1.65開始更新,FliteController贏得不會自己進行音頻會話呼叫,因此在這裏沒有進一步的拒絕危險,並且沒有必要設置noAudioSessionOverrides。

+0

只是補充說明,OpenEars在做TTS時不需要使用麥克風 - 請參閱我的答案。 – Halle

+0

@哈雷嘿謝謝哈雷,我會更新我的答案,包括您的提示,讓大家看到。 – Pavan

+0

謝謝!那太棒了。 – Halle

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類不再自行調用音頻會話。感謝您對此的提醒,並再次抱歉,您因此遭到拒絕。

+0

實際上,我認爲如果即將推出的版本默認不觸摸音頻會話,除非使用PocketsphinxController,否則文檔改進甚至會更好。當FliteController默認使用音頻單元圖形時,它會默認使用早期版本,並結合一些額外的音頻會話,以防止在語音識別期間運行自己的會話設置的混合類型的媒體對象,但它會除非有證據表明語音識別發生,否則可以改變爲更保守一些從不進行音頻會話呼叫。 – Halle

+1

謝謝,但上述答案解決了我的問題。 :-) 我試過了,它確實工作,所以upvote,但消除開放和聲音大大減少了捆綁大小。所以我正在繼續。 –

+0

好吧,我很高興你的問題解決了,因爲拒絕沒有趣味。我仍然想爲你提出的問題留下正確的答案,因爲noAudioSessionOverrides是在公共API OpenEars中的TTS類,它在頭文件和文檔中有記錄。 – Halle