Aufrufen der Spracheingabefunktion – CodenameOne-App (iOS-Port)
Meine Android-App verfügt über ein Texteingabefeld, das über eine Schaltfläche rechts neben EditText verfügt, um die Spracheingabefunktion aufzurufen.
Ich portiere die App mit Codename One. Derzeit ist die iOS-Portierung das Ziel.
Die Schaltfläche hat ein passendes Symbol. Dies ist der Code:
voiceInputButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent voiceIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
voiceIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
try {
activity.startActivityForResult(voiceIntent, RESULT_SPEECH_REQUEST_CODE);
} catch (ActivityNotFoundException ex) {
}
}
});
Es funktioniert sehr gut, der Spracheingabebildschirm wird aufgerufen und dann wird das Ergebnis als String an die App zurückgereicht.
Die Zeichenfolge ist das, was der Benutzer gesagt hat (z. B. ein einzelnes Wort).
Ich brauche diese Funktionalität in der CodenameOne-App für iOS.
Was soll das Äquivalent sein? Ist es notwendig, native iOS-Funktionen über die native Schnittstelle aufzurufen?
Antworten
Sie können Sprache-zu-Text über das Speech-Framework implementieren, um die Spracherkennung für Live- oder aufgezeichnete Audiodaten durchzuführen. Mehr Info:https://developer.apple.com/documentation/speech
Über Codename One können Sie eine native Schnittstelle mit Objective-C-Code erstellen.
Informationen zur Verwendung des Speech-Frameworks mit Objective-C finden Sie in dieser Antwort:https://stackoverflow.com/a/43834120
Die Antwort lautet so: «[...] Um dies zum Laufen zu bringen und zu testen, benötigen Sie nur eine sehr einfache Benutzeroberfläche. Erstellen Sie einfach einen UIButton und weisen Sie ihm die Aktion microPhoneTapped zu. Wenn Sie darauf klicken, sollte die App anfangen, alles zu hören und zu protokollieren, was es ist hört über das Mikrofon auf die Konsole (im Beispielcode ist NSLog das einzige, was den Text empfängt). Es sollte die Aufnahme stoppen, wenn es erneut gedrückt wird. [...]» . Dies scheint dem, was Sie gefragt haben, sehr nahe zu kommen.
Offensichtlich braucht die Erstellung der nativen Schnittstelle Zeit. Für weitere Hilfe können Sie spezifischere Fragen stellen, ich hoffe, ich habe Ihnen einen nützlichen Hinweis gegeben.
Schließlich gibt es auch alternative Lösungen, wieder in Objective-C, wie zum Beispiel:https://github.com/Azure-Samples/cognitive-services-speech-sdk/tree/master/quickstart/objectivec/ios/from-microphone
Sie können im Internet suchen nach: object-c Speech-to-Text