首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS7机器人/ iPhone5s上说话人模式的混淆

iOS7机器人/ iPhone5s上说话人模式的混淆
EN

Stack Overflow用户
提问于 2014-02-23 05:12:48
回答 1查看 1.2K关注 0票数 3

我们有一个VOIP应用程序,它记录和播放音频。因此,我们使用的是PlayAndRecord (kAudioSessionCategory_PlayAndRecord)音频会话类别。到目前为止,我们已经成功地在iPhone 4/4s/5中使用了iOS 6和iOS 7,其中呼叫音频和音调播放得很清楚,而且是可以听到的。然而,使用iPhone 5s时,我们观察到呼叫音频和音调在扬声器模式下都是机械的/混乱的。当使用耳机/蓝牙/耳机时,声音是清晰和可听到的。与iOS 5s一起使用的iPhone版本: 7.0.4

我们正在使用音响记录/播放呼叫音频。在设置音频属性(如会话类别、音频路由、会话模式等)时,我们尝试了旧的(不推荐的) AudioSessionSetProperty()和AVAudioSession API。对于播放音调,我们使用AVAudioPlayer。在VOIP呼叫期间以及在应用程序中按下键盘控制器时,播放音调会产生机器人声音。当使用AudioComponentInstanceNew实例化音频组件时,我们将componentSubType设置为kAudioUnitSubType_VoiceProcessingIO。当用kAudioUnitSubType_VoiceProcessingIO代替kAudioUnitSubType_RemoteIO时,我们注意到呼叫音频和音调的声音不再是机械的,它是相当清晰的,但是使用扬声器模式时音量很低。

总之,保持所有其他音频API相同:

kAudioUnitSubType_VoiceProcessingIO:音量高(理想),但声音的音调和呼叫音频是机器人在扬声器模式。kAudioUnitSubType_RemoteIO:音调和呼叫声音是清晰的,但听不到。

将音频会话类别复制为playAndRecord的步骤。-设置音频路由到扬声器-设置所有其他音频属性,如启动音频单元,激活音频会话,实例化音频组件。-设置输入和呈现回调-尝试两个选项1.使用AVAudioPlayer 2播放音调。播放呼叫音频

任何关于如何克服这个问题的建议。作为一个问题向苹果提出,但尚未得到他们的回应。

我在这里共享了代码,github链接

EN

回答 1

Stack Overflow用户

发布于 2014-04-03 08:23:33

kAudioUnitSubType_VoiceProcessingIOkAudioUnitSubType_RemoteIO之间唯一的区别是,voiceProcessing包含了调出声音回声的代码,即调出扬声器发出的噪音,这样麦克风就不会接收它。我已经很久没玩过音频框架了,但我记得,听起来可能有很多东西,

  1. 您是否正在做可能需要很长时间的音频回调工作? 回调在实时线程上运行。如果处理时间过长,则可能会丢失数据。将有助于跟踪数据在一个固定的时间内,看看你是否捕获了它的全部。使用类似于wireShark的东西来嗅探网络。记录数据包的数量,并查看手机是否捕获了相同的信息。
  2. 你在修改音频吗?
  3. 您有可能导致问题的循环缓冲区吗?

我有几个问题这样做,其中之一是使用第三方循环缓冲区被描述为低延迟和有效的.没有。我在这里回答了我自己的问题,并包括了循环缓冲区实现,这大大改善了我的音频,因为问题是我跳过了数据。

试试看,让我知道:iOS用户界面导致我的音频流出现故障。

请注意,有些代码是音频格式ALaw独有的,0xD5是ALaw中沉默的字节,如果您使用的是线性PCM或任何其他可能会产生某种噪音的代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21964477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档