2017-07-04 3 views
1

私は電話のマイクから来るレベルをキャプチャしようとしています。私はユーザーがボイスメモを作成できるようにアプリを設定しています。メモを記録して電話に保存するコード設定があります。ユーザーが入力しているときに、サウンドウェーブを設定してビューをアニメートしようとしています。スウィフト3つのライブマイクレベルのキャプチャ

非常にうまく動作しているライブラリSwiftSiriWaveformViewを使用し始めました。今私は、マイクレベルをキャプチャする方法を理解する必要があります。私はアプリを実行すると

が、私はこの方法でタイマーに追加された方法

internal func refreshAudioView(_:Timer) { 
    if self.recorder == nil { 
     self.endTimer() 

     return 
    } 

    print("Average Power: \(CGFloat(self.recorder.averagePower(forChannel: 0)))") 
} 

を作成している

@IBAction func startRecordingPressed(_ sender: UIButton) { 
    if self.recorder != nil { 
     //if here it means that the record button was double clicked 
     return 
    } 
    self.filename = "wnw-voice-memo\(getDateFormatter("dd-MM-y_hmmss").string(from: Date())).m4a" 
    self.url = getDocumentsDirectory().appendingPathComponent(self.filename) 
    print(self.url) 

    let settings = [ 
     AVFormatIDKey: Int(kAudioFormatMPEG4AAC), 
     AVSampleRateKey: 12000, 
     AVNumberOfChannelsKey: 1, 
     AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue 
    ] 

    do { 
     self.recorder = try AVAudioRecorder(url: self.url, settings: settings) 
     self.recorder.delegate = self 
     self.recorder.record() 

     timer = Timer.scheduledTimer(timeInterval: 0.009, target: self, selector: #selector(refreshAudioView(_:)), userInfo: nil, repeats: true) 
    } catch { 
     //failed to record! 
    } 
} 

しかし、平均電力は今まで示しているAverage Power: -160.0

として

私はこれを研究しようとしましたが、ライブストリームからではなく、保存ファイルからオーディオ波を生成することに関連する他の解決策しか見つけられませんでした。

どのように私は現在のマイクレベルを得ることができます知っていますか? peakPowerForChannel & averagePowerForChannelにアクセスする前に設定recorder.meteringEnabled = truerefreshAudioViewコールrecorder. updateMeters()

答えて

2

。また、すでに監視しているチャンネル0に加えて、チャンネル1のパワーを読み取ろうとします。

+0

ありがとうございました:) – mic

関連する問題