Leitfaden zur Spracherkennung für Android

Mit der Aufgabe „MediaPipe Language Detector“ können Sie die Sprache eines Textabschnitts ermitteln. Diese Anweisungen zur Verwendung des Language Detector mit Android-Apps. Der Code das in dieser Anleitung beschriebene Beispiel GitHub

Sie können diese Aufgabe in Aktion sehen, indem Sie die Demo ansehen. Weitere Informationen zu Funktionen, Modellen und Konfigurationsoptionen Sehen Sie sich die Übersicht an.

Codebeispiel

Der Beispielcode für Language Detector bietet eine einfache Implementierung dieses zu Ihrer Information. Dieser Code hilft Ihnen beim Testen dieser Aufgabe und beim um eine eigene Spracherkennungsfunktion zu entwickeln. Sie können in der Beispielcode für die Spracherkennung auf GitHub.

Code herunterladen

In der folgenden Anleitung erfahren Sie, wie Sie eine lokale Kopie des Beispiels erstellen. mit dem Befehlszeilentool git für die Versionsverwaltung erstellen.

<ph type="x-smartling-placeholder">

So laden Sie den Beispielcode herunter:

  1. Klonen Sie das Git-Repository mit dem folgenden Befehl:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. Konfigurieren Sie optional Ihre Git-Instanz für den Sparse-Checkout. Sie haben also nur die Dateien für die Beispiel-App „Spracherkennung“:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/languagedetector/android
    

Eine Anleitung zum Einrichten und Ausführen eines Beispiels mit Android Studio finden Sie in der Anleitung zur Einrichtung des Beispielcodes Einrichtungsleitfaden für Android

Schlüsselkomponenten

Die folgenden Dateien enthalten den wichtigen Code für die Textklassifizierung. Beispiel-App:

  • LanguageDetectorHelper.kt Initialisiert den Sprachdetektor und verarbeitet die Modellauswahl.
  • ResultsAdapter.kt – Die Erkennungsergebnisse werden verarbeitet und formatiert.
  • MainActivity.kt Implementiert die Anwendung, einschließlich Aufrufen von LanguageDetectorHelper und ResultsAdapter.

Einrichtung

In diesem Abschnitt werden die wichtigsten Schritte zum Einrichten Ihrer Entwicklungsumgebung und Codeprojekte speziell für die Verwendung der Spracherkennung. Allgemeine Informationen zu Einrichten Ihrer Entwicklungsumgebung für die Verwendung von MediaPipe-Aufgaben, einschließlich Plattformversionsanforderungen finden Sie in der Einrichtungsleitfaden für Android

<ph type="x-smartling-placeholder">

Abhängigkeiten

Die Spracherkennung verwendet die com.google.mediapipe:tasks-text-Bibliotheken. Dieses Element hinzufügen Abhängigkeit zur Datei build.gradle Ihres Android-App-Entwicklungsprojekts. Sie können die erforderlichen Abhängigkeiten mit dem folgenden Code importieren:

dependencies {
    implementation 'com.google.mediapipe:tasks-text:latest.release'
}

Modell

Für die Aufgabe „MediaPipe Language Detector“ ist ein trainiertes Modell erforderlich, das mit dieser für die Aufgabe. Weitere Informationen zu verfügbaren trainierten Modellen für die Spracherkennung finden Sie unter in der Aufgabenübersicht im Abschnitt „Modelle“.

Wählen Sie das Modell aus, laden Sie es herunter und speichern Sie es dann in Ihrem Projektverzeichnis:

<dev-project-root>/src/main/assets

Geben Sie den Pfad des Modells innerhalb des Parameters ModelName an.

Aufgabe erstellen

Sie können die Aufgabe mit einer der createFrom...()-Funktionen erstellen. Die Die Funktion createFromOptions() akzeptiert Konfigurationsoptionen für die Sprache Detektor. Sie können die Aufgabe auch mit der createFromFile()-Factory initialisieren . Die Funktion createFromFile() akzeptiert einen relativen oder absoluten Pfad zu die Datei mit dem trainierten Modell. Weitere Informationen zum Konfigurieren von Aufgaben finden Sie unter Konfigurationsoptionen.

Der folgende Code zeigt, wie diese Aufgabe erstellt und konfiguriert wird.

// For creating a language detector instance:
LanguageDetectorOptions options =
       LanguageDetectorOptions.builder()
       .setBaseOptions(
          BaseOptions.builder()
            .setModelAssetPath(modelPath)
            .build()
          )
       .build();
LanguageDetector languageDetector = LanguageDetector.createFromOptions(context, options);

Im Codebeispiel finden Sie ein Beispiel für das Erstellen einer Aufgabe. LanguageDetectorHelper Klasse initDetector().

Konfigurationsoptionen

Diese Aufgabe bietet die folgenden Konfigurationsoptionen für Android-Apps:

Option Beschreibung Wertebereich Standardwert
maxResults Legt die optionale maximale Anzahl der am besten bewerteten Sprachvorhersagen fest auf zurückgeben. Wenn dieser Wert kleiner als null ist, werden alle verfügbaren Ergebnisse zurückgegeben. Beliebige positive Zahlen -1
scoreThreshold Legt den Schwellenwert für die Vorhersagepunktzahl fest, der den Wert in die Modellmetadaten (falls vorhanden). Ergebnisse unter diesem Wert werden abgelehnt. Beliebiger Gleitkommawert Nicht festgelegt
categoryAllowlist Legt die optionale Liste der zulässigen Sprachcodes fest. Wenn das Feld nicht leer ist, Sprachvorhersagen, deren Sprachcode nicht in diesem Satz enthalten ist, herausgefiltert. Diese Option schließt sich mit categoryDenylist und die Verwendung beider führt zu einem Fehler. Alle Strings Nicht festgelegt
categoryDenylist Legt die optionale Liste der unzulässigen Sprachcodes fest. Wenn nicht leer ist, werden Sprachvorhersagen, deren Sprachcode in diesem Satz enthalten ist, gefiltert aus. Diese Option schließt sich mit categoryAllowlist und führt dies zu einem Fehler. Alle Strings Nicht festgelegt

Daten vorbereiten

Die Spracherkennung funktioniert mit Textdaten (String). Die Aufgabe verarbeitet die Dateneingabe Vorverarbeitung, einschließlich Tokenisierung und Tensor-Vorverarbeitung. Alle erfolgt die Vorverarbeitung in der Funktion detect(). Es ist nicht nötig, zusätzliche Vorverarbeitung des Eingabetexts.

String inputText = "Some input text for the language detector";

Aufgabe ausführen

Die Spracherkennung verwendet die Methode LanguageDetector.detect(), um die Eingabe zu verarbeiten und die Sprache des Textes vorhersagen. Sie sollten eine separate Ausführung Thread zum Ausführen der Erkennung, um das Blockieren des Android-Nutzers zu vermeiden Threads mit Ihrer Anwendung.

Der folgende Code zeigt, wie die Verarbeitung mit der Aufgabe ausgeführt wird. mit einem separaten Ausführungsthread.

// Predict the language of the input text.
fun classify(text: String) {
    executor = ScheduledThreadPoolExecutor(1)

    executor.execute {
        val results = languageDetector.detect(text)
        listener.onResult(results)
    }
}

Im Codebeispiel finden Sie ein Beispiel für das Ausführen einer Aufgabe. LanguageDetectorHelper Klasse detect().

Ergebnisse verarbeiten und anzeigen

Die Spracherkennung gibt eine LanguageDetectorResult aus, die aus einer Liste von Sprachvorhersagen zusammen mit den Wahrscheinlichkeiten für diese Vorhersagen abrufen. Die Sprachkategorien werden im Modell definiert, siehe Aufgabenübersicht Abschnitt „Modelle“ für weitere Informationen zu dem von Ihnen verwendeten Modell.

Im Folgenden sehen Sie ein Beispiel für die Ausgabedaten dieser Aufgabe:

LanguageDetectorResult:
  LanguagePrediction #0:
    language_code: "fr"
    probability: 0.999781

Dieses Ergebnis wurde erhalten, indem das Modell für den Eingabetext ausgeführt wurde: "Il y a beaucoup de bouches qui parlent et fort peu de têtes qui pensent."

Im Codebeispiel finden Sie ein Beispiel für die Anzeige von Ergebnissen. ResultsAdapter und ViewHolder innere Klasse.