1
私は、ユーザーがアプリと話しているときに検出する必要のあるアプリを持っています。私は第三者のAPIを持っていたくない。 I this turtorialを使用しますが、私はこれは私が使用していたコードであるSWIFT 2.に変換しなければならなかった:速報で話すことを検出する
import UIKit
import AVFoundation
import CoreAudio
class ViewController: UIViewController, AVAudioPlayerDelegate, AVAudioRecorderDelegate {
var audioRecorder: AVAudioRecorder?
var timer = NSTimer()
@IBAction func start(sender: AnyObject) {
if audioRecorder?.recording == false {
audioRecorder?.record()
timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: #selector(ViewController.checkForAudio), userInfo: nil, repeats: true)
}
}
@IBAction func stop(sender: AnyObject) {
if audioRecorder?.recording == true {
audioRecorder?.stop()
timer.invalidate()
}
}
func checkForAudio() {
audioRecorder?.updateMeters()
print("Average: \(audioRecorder?.averagePowerForChannel(0)) Peak: \(audioRecorder?.peakPowerForChannel(0))")
}
override func viewDidLoad() {
super.viewDidLoad()
let fileMgr = NSFileManager.defaultManager()
let dirPaths = fileMgr.URLsForDirectory(.DocumentationDirectory, inDomains: .UserDomainMask)
let soundFileURL = dirPaths[0].URLByAppendingPathComponent("sound.caf")
let recordSettings = [AVSampleRateKey: 44100.0, AVNumberOfChannelsKey: 2, AVEncoderBitRateKey: 12800, AVLinearPCMBitDepthKey: 16, AVEncoderAudioQualityKey: AVAudioQuality.Max.rawValue]
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
} catch let error as NSError {
print("audioSession error: \(error.localizedDescription)")
}
do {
try audioRecorder = AVAudioRecorder(URL: soundFileURL, settings: recordSettings as! [String : AnyObject])
audioRecorder?.prepareToRecord()
audioRecorder?.meteringEnabled = true
} catch let error as NSError {
print("audioSession error: \(error.localizedDescription)")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
class func getDocumentsDirectory() -> String {
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let documentsDirectory = paths[0]
return documentsDirectory
}
}
そして、それだけで、これを印刷し、私は大きな音を作り、タリン午前ログではなく、それそれでも変わらない。私はあなたのコードを試してみました
Average: Optional(-120.0) Peak: Optional(-120.0)
Average: Optional(-120.0) Peak: Optional(-120.0)
Average: Optional(-120.0) Peak: Optional(-120.0)
Average: Optional(-120.0) Peak: Optional(-120.0)
Average: Optional(-120.0) Peak: Optional(-120.0)
Average: Optional(-120.0) Peak: Optional(-120.0)
Average: Optional(-120.0) Peak: Optional(-120.0)
Average: Optional(-120.0) Peak: Optional(-120.0)
Average: Optional(-120.0) Peak: Optional(-120.0)
Average: Optional(-120.0) Peak: Optional(-120.0)
Average: Optional(-120.0) Peak: Optional(-120.0)
Average: Optional(-120.0) Peak: Optional(-120.0)
Average: Optional(-120.0) Peak: Optional(-120.0)
Average: Optional(-120.0) Peak: Optional(-120.0)
Average: Optional(-120.0) Peak: Optional(-120.0)
の作品iOS 10のみを対象とする場合は、Appleの新しい音声認識APIの調査を検討することもできます。 https://developer.apple.com/videos/play/wwdc2016/509/ –
問題は、インターネットに接続する必要があるということです。 – Loanb222