Ich versuche, die Stimme des Benutzers aufzuzeichnen und es in Textdaten zu ändern. Ich benutzte AVAudioRecorder, um den Ton und SpeechKit aufzuzeichnen, um es zu Text zu ändern, der in iOS 10 enthalten ist. Wenn der Benutzer die Schaltfläche aufbricht, startet und stoppt die Schaltfläche, wenn die Schaltfläche ausgebessert wird. Aber wenn ich den AVAudioRecorder mit Do Catch-Syntax initialisiere, tritt ein Fehler auf und schlägt fehl. Ich habe die entsprechenden Frameworks (Sprache, AVFoundation) hinzugefügt.Xcode 8.0 beta3 AVAudioRecorder (URL, Einstellung) Fehler Catch - "Fehler Domain = NSOSStatusErrorDomain Code = -50" (null) ""
import UIKit
import Speech
import AVFoundation
class SearchViewController: UIViewController, CLLocationManagerDelegate, AVAudioRecorderDelegate {
var audioRecorder = AVAudioRecorder()
let recordSettings = [AVSampleRateKey : String(NSNumber(value: Float(44100.0))),
AVFormatIDKey : String(kAudioFileCAFType),
AVNumberOfChannelsKey : String(NSNumber(value: 2))]
@IBAction func recordButtonDown(_ sender: AnyObject) {
print("recordButtonDown")
self.audioPlayer.play()
sleep(1)
let fileManager = FileManager.default
let paths = fileManager.urlsForDirectory(.documentDirectory, inDomains: .userDomainMask)
var audioURL = paths[0] as NSURL
audioURL = audioURL.appendingPathComponent("soundForMapSearch.caf", isDirectory: false)!
do {
self.audioRecorder = try AVAudioRecorder(url: soundFileURL as URL, settings: self.recordSettings)
self.audioRecorder.delegate = self
self.audioRecorder.prepareToRecord()
self.audioRecorder.record()
} catch (let error) {
print("Error: \(error)")
}
}
@IBAction func recordButtonUp(_ sender: AnyObject) {
self.audioRecorder.stop()
}
override func viewDidLoad() {
super.viewDidLoad()
do {
try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
try audioSession.setActive(true)
audioSession.requestRecordPermission({ (recordPermission) in
})
} catch {
print("record initiallizing failed")
}
Und auf der Leitung auftritt
self.audioRecorder = try AVAudioRecorder(url: soundFileURL as URL, settings: self.recordSettings)
Fehler bei catch
Error: Error Domain=NSOSStatusErrorDomain Code=-50 "(null)"
gedruckt wird. Ich habe nach diesem Fehler gesucht und code = -50 bedeutet, dass das NSURL-Objekt ungültig ist. Wie kann ich diesen Fehler beheben?
Sollten Sie nicht Ihre 'audioURL' verwenden statt dessen' soundFileURL', dass wir nichts wissen? – Moritz