相关疑难解决方法(0)

音频会话:在iOS 7.1中使用测量模式会导致音量低/无声音

使用AVAudioSessionModeMeasurement和AVAudioSessionCategoryPlayAndRecord曾经在iOS 5.x,6.x和7.0下正常工作,但它现在导致iOS 7.1下某些(不是所有)设备上的扬声器音量低/没有声音.这是代码:

NSError* error = nil;
// Set Aduio Session category
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord
              withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker
                    error:&error];
if( error ) ...

// Set Audio Session mode
[audioSession setMode:AVAudioSessionModeMeasurement error:&error];
if( error ) ...
Run Code Online (Sandbox Code Playgroud)

附注:旧版本的代码使用AudioSessionSetProperty函数来设置kAudioSessionProperty_OverrideCategoryDe​​faultToSpeaker,但在iOS 7.1下仍然存在相同的问题.

到目前为止,只有iPad 4设备才会出现低音量(或无声音)问题.我不知道它是发生在所有iPad 4上还是只发生在一个子集上,但只有iPad 4的用户在升级到iOS 7.1后才与我们联系.删除将模式设置为AVAudioSessionModeMeasurement的代码可以解决问题; 听到正常音量的音频.但是,不使用测量模式会影响我们对录制的音频进行的信号处理,因此绝对不可取.

音频的播放方式似乎并不重要.设置测量模式时,AVAudioPlayer和音频队列服务都会显示相同的低音量/无声音问题.

因为这个问题似乎只会影响iPad,所以我尝试删除AVAudioSessionCategoryOptionDefaultToSpeaker选项(这通常是iPhone需要的),看看这是否会有所帮助,但这并没有改变.

插入耳机可以解决问题; 通过耳机以正常音量听到音频.

假设这是一个iOS 7.1错误,我已经将它报告为Apple的错误.但是我想问你们,看看我是否可能错过了关于iPad 4的特别之处,或者在我的音频会话设置中可能还有别的东西.如果您有一个播放音频的应用程序(通过AVAudioPlayer或音频队列服务),即使您在将类别更改为AVAudioSessionCategoryPlayAndRecord并将模式更改为AVAudioSessionModeMeasurement之后,如果您在iPad 4上仍然可以正常播放音频,这将有助于我极大.您的应用不需要实际录制任何音频; 无论音频是否正在录制,都会出现问题.

在此先感谢您的帮助.

core-audio ipad ios avaudiosession ios7.1

7
推荐指数
1
解决办法
2786
查看次数

斯威夫特:当试图迅速将语音转换为iPhone的语音时,iPhone的音量很低

我正在尝试语音识别样本.如果我开始通过麦克风识别我的演讲,那么我试图让iPhone听到那个公认的文字.这是工作.但是,声音太低了.你可以指导我吗?

而不是,如果我尝试简单的按钮操作,使用AVSpeechUtterance代码,音量是正常的.

之后,如果我选择startRecognise()方法,音量太低.

我的守则

func startRecognise()
{
let audioSession = AVAudioSession.sharedInstance()  //2
    do
    {
        try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
        try audioSession.setMode(AVAudioSessionModeDefault)
        try audioSession.setMode(AVAudioSessionModeMeasurement)
        try audioSession.setActive(true, with: .notifyOthersOnDeactivation)
        try AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.speaker)
    }
    catch
    {
        print("audioSession properties weren't set because of an error.")
    }
    recognitionRequest = SFSpeechAudioBufferRecognitionRequest()
    guard let inputNode = audioEngine.inputNode else {
        fatalError("Audio engine has no input node")
    }
    guard let recognitionRequest = recognitionRequest else {
        fatalError("Unable to create an SFSpeechAudioBufferRecognitionRequest object")
    }
    recognitionRequest.shouldReportPartialResults = true
    recognitionTask = speechRecognizer.recognitionTask(with: recognitionRequest, …
Run Code Online (Sandbox Code Playgroud)

avaudioplayer ios avspeechsynthesizer swift sfspeechrecognizer

7
推荐指数
1
解决办法
1588
查看次数

AVAudioSession的PlayAndRecord类别和AVAudioSessionModeMeasurement与defaultToSpeaker选项不兼容吗?

尝试使用该模式AVAudioSession放入.playAndRecord类别AVAudioSessionModeMeasurement会导致该.defaultToSpeaker选项被忽略,从而导致听筒(也称为接收器)静静地播放输出。

ios avaudiosession swift avaudioengine

5
推荐指数
1
解决办法
573
查看次数