So erkennen Sie den Sprachstart auf der iOS Speech API

9

Ich habe eine iOS-App in XCode / Ziel C entwickelt. Es verwendet die iOS-Sprach-API zur Verarbeitung der kontinuierlichen Spracherkennung. Es funktioniert, aber ich möchte das Mikrofon-Symbol rot drehen, wenn Sprache beginnt, ich möchte auch erkennen, wenn Sprache endet.

Ich implementiere die Schnittstelle SFSpeechRecognitionTaskDelegate, die den Callback onDetectedSpeechStart und speechRecognitionTask liefert: didHypothesizeTranscription: aber diese treten erst auf, wenn das Ende des ersten Wortes verarbeitet wird, nicht am Anfang der Rede.

Ich möchte den Anfang der Rede (oder jedes Geräusch) erkennen. Ich denke, dass es vom InstallTapOnBus möglich sein sollte: vom AVAudioPCMBuffer aber bin ich mir nicht sicher, wie man erkennen kann, ob das Schweigen gegen Rauschen ist, das könnte Sprache sein.

Auch die Sprach-API gibt kein Ereignis, wenn die Person aufhört zu sprechen, d. h. Stilleerkennung, sie zeichnet nur auf, bis sie abgelaufen ist. Ich habe einen Hack, um Stille zu erkennen, indem ich die Zeit zwischen dem letzten gefeuerten Ereignis überprüfe, nicht sicher, ob dies ein besserer Weg ist.

Code ist hier,

%Vor%     
James 27.04.2017, 13:39
quelle

3 Antworten

1

Dies ist der Code, mit dem wir gelandet sind.

Der Schlüssel war, zuerst TapOnBus () und dann den magischen Code zu installieren, um das Volume zu erkennen,

float volume = fabsf (* buffer.floatChannelData [0]);

%Vor%     
James 20.09.2017, 14:51
quelle
1
___ qstnhdr ___ So erkennen Sie den Sprachstart auf der iOS Speech API ___ answer46325305 ___

Dies ist der Code, mit dem wir gelandet sind.

Der Schlüssel war, zuerst TapOnBus () und dann den magischen Code zu installieren, um das Volume zu erkennen,

float volume = fabsf (* buffer.floatChannelData [0]);

%Vor%     
___ tag123objectivec ___ Dieses Tag sollte nur bei Fragen verwendet werden, die sich auf Objective-C-Funktionen beziehen oder von Code in der Sprache abhängen. Die Tags [Kakao] und [Kakao-Touch] sollten verwendet werden, um nach Frameworks oder Klassen von Apple zu fragen. Verwenden Sie die zugehörigen Tags [ios], [macos], [apple-watch] und [tvos] für Probleme, die für diese Plattformen spezifisch sind. ___ tag123ios ___ iOS ist das mobile Betriebssystem, das auf dem Apple iPhone, iPod touch und iPad ausgeführt wird. Verwenden Sie dieses Tag [ios] für Fragen zur Programmierung auf der iOS-Plattform. Verwenden Sie die verwandten Tags [objective-c] und [swift] für Probleme, die für diese Programmiersprachen spezifisch sind. ___ answer43867242 ___

Haben Sie versucht, AVAudioRecorder zu verwenden? Hier finden Sie einen Link zur Dokumentation

Sie haben eine Eigenschaft NSTimer , die das aktuelle Volumen (Verstärkung) des Kanals bereitstellt.

    
___ tag123Spracherkennung ___ Spracherkennung (SR) ist das interdisziplinäre Teilgebiet der Computerlinguistik, das Wissen und Forschung in den Bereichen Linguistik, Informatik und Elektrotechnik einbindet, um Methoden und Technologien zu entwickeln, die die Erkennung und Übersetzung gesprochener Sprache ermöglichen Text von Computern und computergestützten Geräten, z. B. solchen, die als intelligente Technologien und Robotik kategorisiert sind ___ antwort43852066 ___

Ich würde eine Tiefpassfilterung des Leistungssignals mit %code% und einem %code% für den Rückruf empfehlen. Auf diese Weise können Sie erkennen, wenn ein bestimmter Schwellenwert in den Audiorecordermesswerten erreicht ist, und die Tiefpassfilterung hilft, das Rauschen zu mindern.

In der .h-Datei:

%Vor%

In der .m-Datei:

%Vor%     
___ qstntxt ___

Ich habe eine iOS-App in XCode / Ziel C entwickelt. Es verwendet die iOS-Sprach-API zur Verarbeitung der kontinuierlichen Spracherkennung. Es funktioniert, aber ich möchte das Mikrofon-Symbol rot drehen, wenn Sprache beginnt, ich möchte auch erkennen, wenn Sprache endet.

Ich implementiere die Schnittstelle SFSpeechRecognitionTaskDelegate, die den Callback onDetectedSpeechStart und speechRecognitionTask liefert: didHypothesizeTranscription: aber diese treten erst auf, wenn das Ende des ersten Wortes verarbeitet wird, nicht am Anfang der Rede.

Ich möchte den Anfang der Rede (oder jedes Geräusch) erkennen. Ich denke, dass es vom InstallTapOnBus möglich sein sollte: vom AVAudioPCMBuffer aber bin ich mir nicht sicher, wie man erkennen kann, ob das Schweigen gegen Rauschen ist, das könnte Sprache sein.

Auch die Sprach-API gibt kein Ereignis, wenn die Person aufhört zu sprechen, d. h. Stilleerkennung, sie zeichnet nur auf, bis sie abgelaufen ist. Ich habe einen Hack, um Stille zu erkennen, indem ich die Zeit zwischen dem letzten gefeuerten Ereignis überprüfe, nicht sicher, ob dies ein besserer Weg ist.

Code ist hier,

%Vor%     
___
Pau Senabre 08.05.2017 15:52
quelle
0

Haben Sie versucht, AVCaptureAudioChannel zu verwenden? Hier finden Sie einen Link zur Dokumentation

Sie haben eine Eigenschaft volume , die das aktuelle Volumen (Verstärkung) des Kanals bereitstellt.

    
pesch 09.05.2017 10:22
quelle