2016-12-13 1 views
2

Ich versuche, den Apple SpeakToMe: Verwenden der Spracherkennung mit AVAudioEngine Probe von their website here. Mein Problem ist, dass Sie beim Beenden von AVAudioEngine und SpeechRecognizer Systemgeräusche nicht mehr verwenden können.Spracherkennung mit AVAudioEngine Blöcke Sound nach der Aufnahme

Wie geben Sie AVAudioEngine und SpeechRecognizer frei, damit die Sounds nach dem Stoppen der Aufnahme wieder funktionieren?

Um dies zu duplizieren:

  • zum Download von Beispielcode
  • ein UITextField zum Storyboard hinzuzufügen.
  • Führen Sie das Projekt aus und geben Sie es in das Textfeld ein (Sie werden bemerken, dass Sie Ihre Tippgeräusche hören können).
  • Dann die Aufnahme starten und wieder Aufnahme
  • Typ in das Textfeld nicht mehr (jetzt wird kein Ton zu hören sein)

UPDATE

Dieses auf einem realen Gerät geschieht nur - nicht auf dem Simulator.

Antwort

4

Nach Stunden der Fehlersuche stieß ich auf das nicht freigegebene Objekt, das Probleme verursachte. In ihrem Beispielcode geben sie AVAudioSession nicht frei. Dadurch werden die Soundkanäle blockiert.

Das Update ist die AVAudioSession eine Eigenschaft zu machen:

private var audioSession : AVAudioSession? 

und legen Sie dann audioSession.active auf false, wenn die Aufzeichnung gestoppt:

if let audioSession = audioSession { 
    do { 
     try audioSession.setActive(false, with: .notifyOthersOnDeactivation) 
    } catch { 
     // handle error 
    } 
} 
Verwandte Themen