11

In-App, ich muss Live-Aufnahme von zuvor lokal gespeicherten Sprachbefehl vergleichen, wenn es übereinstimmt (nicht nur Text, sondern auch identifizierte Person Stimme) dann die notwendigen Maßnahmen durchführen.Vergleichen Sie zwei Audio (lokal gespeicherten voraufgezeichneten Sprachbefehl und aufgenommen von Mikrofon in der App) in iOS

1-stimmige Sprachbefehle von derselben Person.

2-match Befehlstext.

Ich habe viele Möglichkeiten angewendet, aber keine arbeiten nach meiner Erwartung.

Erstens: Verwendung Sprache in Text-Bibliothek wie OpenEars, SpeechKit aber diese Bibliotheken konvertieren nur Text aus der Sprache.

Ergebnis: Fehlgeschlagen ist als meine Erwartung

Zweitens: (Audio Fingerdruck)

acrcloud Library: in dieser Bibliothek, ich einen Befehl aufzeichnen und gespeichert, dass mp3file auf acrcloud Server und mit der Live-Aufnahme (gesprochen von mir) passt es nicht zusammen, aber wenn ich die gleiche Aufnahme (aufgenommene MP3-Datei meiner Stimme), die auf den Acrcloud-Server hochgeladen wird, dann stimmt es überein. Ergebnis: Fehlgeschlagen ist als meine Erwartung

API.AI: in dieser Bibliothek ist es wie Sprache in Text, ich einige Textbefehl auf seinem Server gespeichert und dann spricht jemand das gleiche Kommando das Ergebnis Erfolg. Ergebnis: Fehlgeschlagen ist als meine Erwartung

mir bitte vorschlagen, wie dieses Problem für Application iOS lösen

+0

@ gnasher729 Spaß aus der letzten Woche, nach Ihrem Kommentar ist es möglich. –

+0

Wenn die accrcloud-Bibliothek versagt, dann scheuen Sie sich, ein Ticket auf ihrer Website zu erstellen. –

+0

@TejaNandamuri Acrcloud-Bibliothek nicht versagt, aber meine Erwartung unterscheidet sich von der Person Stimme mit Inhalt übereinstimmen. –

Antwort

-2

Im Allgemeinen denke ich, Sie Methode 1 mit etwas zwicken verwenden sollten. Für lokales Audio. Sie fügen Text-Skript-Version wie: 1 Audio, Quellskript Für Audioaufnahme. Verwenden Sie OpenEars, SpeechKit zum Konvertieren von Audio in Text

Versuchen Sie, Quelltext und Text zu vergleichen, um Ergebnisse zu erhalten. Sie sollten markieren, welcher Text in Quellskript für das beste Vergleichsergebnis betont werden muss. Manchmal haben wir Wort wie: Wein, Weib, weiß ... (versuchen, dies denken Griff)

GLHF

1

Dies ist, wie ich würde diesen Ansatz, wenn ich ur Anforderungen richtig verstehen:

  1. Sie müssen das Audiospektrum jeder Aufnahme mit der Person vergleichen (siehe vDSP im Accelerate-Framework). Eine FFT-Analyse mit 1024 Fenster sollte ausreichen (falls nicht, versuchen Sie, es zu verdoppeln) würde ich den Vergleich mit starten 5-10 Peaks im Spektrum und experimentieren von dort. Auschecken EZAudio für eine einfache FFT-Implementierung, um loszulegen.

  2. Verwenden Sie eine Sprache zu Text-Bibliothek, um den Text zu entsprechen. Sprachakzente verzerren normalerweise ihre Ergebnisse beträchtlich, so würde ich wahrscheinlich damit beginnen, den Text sowohl von Audio als auch von Vergleichen zu erhalten, anstatt einen Befehl in Text zu spezifizieren, der zutrifft.

Viel Glück!

+0

Ich habe bereits die Frequenz von Audio über FFT (vDSP im Accelerate-Framework) berechnet und bitte erklären Sie den Prozess der Berechnung von Audio-Spektrum und dann, wie diese Audio-Spektren für den Abgleich menschlicher Stimme zu vergleichen.Dies ist die wichtigste Herausforderung, wie wir Code dafür schreiben. –

+1

A. Levy hat eine sehr schöne Antwort hier, um loszulegen: http://StackOverflow.com/Questions/604453/Analyze-Audio-Use-Fast-Fourier-Transform – Kaitis

1

http://www.politepix.com/openears/ kann in objective-c verwendet werden oder wenn Sie schnell versuchen möchten http://blog.tryolabs.com/2015/06/15/tlsphinx-automatic-speech-recognition-asr-in-swift/. Ich habe sie nie benutzt, aber sie scheinen alles zu haben, was du brauchst. Wenn Sie nicht nach C++ - Bibliotheken suchen, sollten Sie mehr Optionen haben, aber wahrscheinlich müssen Sie sich mit typischen Portierungsproblemen herumschlagen. Ich empfehle Ihnen wirklich nicht, selbst eines zu schreiben, da Sie einige Zeit damit verbringen werden, Techniken zu lernen, um dann eine Signalverarbeitungsbibliothek zu importieren, um dann mit dem Schreiben Ihres eigenen Algorithmus zu beginnen. Außer natürlich, wenn Sie Zeit und Interesse haben, es zu tun.

Ich würde empfehlen, dass Sie Ihre App auf die gleiche Weise integrieren, wie Spracherkennungssoftware normalerweise entwickelt wird: Zeichnen Sie eine Reihe von Beispielen auf, bauen Sie Tests auf und überprüfen Sie oft, ob Dinge auf/ab sind.

Eines der wichtigeren Dinge, die ich bei der Spracherkennung (sowohl bei der Worterkennung als auch bei der Sprechererkennung) gelernt habe, war, dass die Qualität der Aufnahme einen großen Einfluss darauf hat, was man damit machen kann. Machen Sie eine kleine Menge von Aufnahmen an der leisesten Stelle, die Sie finden können, dann haben Sie immer eine Benchmark, um mit mehr realen Aufnahmen zu vergleichen.

Versuchen Sie auch, alle Mikrofone abzudecken, die Sie in realen Anwendungen zu einem späteren Zeitpunkt finden werden, da es keine innere Garantie dafür gibt, dass alle iphone Mikrofone gleich sind. Ich würde erwarten, dass es nicht über verschiedene iPhone-Modelle variieren wird, aber wer weiß?

+0

das ist Bibliothek ist nur Sprache zu Text nicht menschlichen Vergleich Stimme wie Stimme Authentifizierung. –

+1

Mein Fehler dort. BTW erwähnen Sie nicht, wenn Sie die schwere Arbeit auf einen Server abladen können, was Ihre Möglichkeiten zur CPU-intensive Algorithmen und/oder andere Sprachen sehr öffnen würde. Ich bin überrascht von der Menge bezahlter Lösungen und sehr wenigen Open-Source-Lösungen. Hier ist ein Beispiel für eine kostenpflichtige Technologie (Freemium), die serverseitig erstellt wird, aber anscheinend müssen Sie nur REST-Aufrufe durchführen, damit Sie sich einfach in iOS integrieren können: https://www.microsoft.com/cognitive-services/en-us/Sprecher-Erkennung-API. Microsoft bietet auch ein Sprach-zu-Text-SDK, das offensichtlich offline arbeiten kann. – Fabio

+0

Haben Sie Glück mit Microsoft API? – Fabio