18 Stimmen

IOS AVAudioRecorder, Wie man nur aufnimmt, wenn der Audioeingang vorhanden ist (nicht stumm)

Ich verwende AVAudioRecorder, um Audiosignale vom Mikrofon des iPhones aufzuzeichnen, aber ich möchte die Stille-Perioden verwerfen: Starten Sie die Aufnahme, wenn Sie einen Ton erkennen, und stoppen Sie die Aufnahme, wenn die nächste Stille eintritt.

Ich weiß nicht, wie man das macht.

Haben Sie einen Rat?

Dankeschön!

13voto

Jake Punkte 624

Vielleicht könnten Sie die Unterstützung des AVAudioRecorders für die Audiopegelmessung nutzen, um die Audiopegel zu verfolgen und die Aufnahme zu aktivieren, wenn die Pegel über einem bestimmten Schwellenwert liegen. Sie müssten die Pegelmessung mit aktivieren:

[anAVAudioRecorder setMeteringEnabled:YES];

und dann könnten Sie in regelmäßigen Abständen anrufen:

[anAVAudioRecorder updateMeters];
power = [anAVAudioRecorder averagePowerForChannel:0];
if (power > threshold && anAVAudioRecorder.recording==NO) {
    [anAVAudioRecorder record];
} else if (power < threshold && anAVAudioRecorder.recording==YES) {
    [anAVAudioRecorder stop];
}

Oder so ähnlich.

2 Stimmen

Jake, ich danke dir für deine Antwort. Ich kann die Belichtungsmessung nicht verwenden, da sie nur den Durchschnitt und die Spitzenwerte misst. Wenn es eine gemischte Reihe von Stille und Audio-Eingang ist, wird es nicht bemerken, wenn theres eine neue Stille nach einer Stille-Audio.

3 Stimmen

Außerdem sieht es so aus, als würden die Anzeigen nur aktualisiert, wenn der AVAudioRecorder aufnimmt.

0 Stimmen

Wie hoch ist der Schwellenwert?

4voto

Martha Punkte 1050

Ich habe einen Weg gefunden, der auf den Audio Queue Services basiert. Es ist viel komplizierter, aber viel mehr Spaß zu, wie Sie Ihre Warteschlange Puffer für die eingehenden Audiopakete definieren.

Sie müssen den Callback definieren, wenn der Puffer voll ist, so dass Sie den Puffer voller Pakete haben, die Sie nach Belieben verarbeiten können, in meinem Fall, um Stille und ein paar andere Dinge zu erkennen.

Wenn ich später mehr Zeit habe, werde ich die Lösung posten. Wenn jemand drängte, dass einfach nicht warten Drop mir eine E-Mail und ill froh sein zu helfen.

Sehen Sie sich das Beispiel von speakhere hier an: http://developer.apple.com/library/ios/#samplecode/SpeakHere/Introduction/Intro.html

3 Stimmen

"Wenn jemand darauf drängt und nicht warten kann, schickt mir eine E-Mail und ich helfe gerne" Wo ist Ihre E-Mail-Adresse?

0 Stimmen

@Martha. Kann ich das SpeakHear-Beispiel in meinem Projekt verwenden?

1voto

user2683747 Punkte 111

Sie können den Hintergrund-Audiopegel bestimmen, indem Sie vor der eigentlichen Aufnahme in eine Mülldatei aufnehmen:

AVAudioRecorder funktioniert nicht mehr, wenn auf /dev/null auf dem iPhone 5s mit iOS 7 geschrieben wird

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X