Richiamo della funzione di input vocale - App CodenameOne (porta iOS)

Aug 21 2020

La mia app per Android presenta una casella di input di testo che ha un pulsante a destra di EditText per chiamare la funzione di input vocale.

Sto effettuando il porting dell'app con Codename One. Al momento la porta iOS è l'obiettivo.

Il pulsante ha un'icona adatta. Questo è il codice:

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) {

            }
        }
    });

Funziona molto bene, viene chiamata la schermata di input vocale e quindi il risultato viene restituito all'app come stringa.

La stringa è ciò che l'utente ha detto (ad esempio, una singola parola).

Devo avere questa funzionalità nell'app CodenameOne per iOS.

Quale dovrebbe essere l'equivalente? È necessario chiamare le funzioni iOS native, tramite l'interfaccia nativa?

Risposte

FrancescoGalgani Aug 22 2020 at 20:40

È possibile implementare la sintesi vocale tramite il framework vocale, per eseguire il riconoscimento vocale su audio dal vivo o preregistrato. Ulteriori informazioni:https://developer.apple.com/documentation/speech

Informazioni su Codename One, puoi creare un'interfaccia nativa utilizzando il codice Objective-C.

Per utilizzare il framework Speech con Objective-C, vedere questa risposta:https://stackoverflow.com/a/43834120

La risposta dice così: «[...] Per farlo funzionare e testarlo hai solo bisogno di un'interfaccia utente molto semplice, basta creare un UIButton e assegnargli l'azione microPhoneTapped, quando viene premuto l'app dovrebbe iniziare ad ascoltare e registrare tutto ciò che ascolta attraverso il microfono alla console (nel codice di esempio NSLog è l'unica cosa che riceve il testo). Dovrebbe interrompere la registrazione quando viene premuto di nuovo. […]» . Questo sembra molto vicino a quello che hai chiesto.

Ovviamente la creazione dell'interfaccia nativa richiede tempo. Per ulteriore aiuto, puoi fare domande più specifiche, spero di averti dato un'indicazione utile.


Esistono infine anche soluzioni alternative, sempre in Objective-C, come:https://github.com/Azure-Samples/cognitive-services-speech-sdk/tree/master/quickstart/objectivec/ios/from-microphone

Puoi cercare sul Web: speech-to-text obiettivo-c