Используете ли текст Microsoft Word Speech API в Java для Android? - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь использовать преобразование текста в речь Microsoft Speech API в своем проекте Java для Android.Это не работает.Можно ли использовать этот API в Java?

Речевой текст работает, я нашел Быстрый старт и не испытывал проблем с его использованием.

Однако нет примера Java для преобразования текста в речь, только в C # , C ++ (Windows) и C ++ (Linux) .

Я пытался адаптировать код в Java, но он не работает, и я понятия не имею, почему.

 public void onTextToSpeechButtonClicked(View v) {
        TextView txt = (TextView) this.findViewById(R.id.texttospeech); // 'texttospeech' is the ID of my text view

        try {
            // THIS LINE ISN'T WORKING
            com.microsoft.cognitiveservices.speech.internal.SpeechConfig config = com.microsoft.cognitiveservices.speech.internal.SpeechConfig.FromSubscription(speechSubscriptionKey, serviceRegion); 

            config.SetSpeechRecognitionLanguage("fr-FR");
            assert(config != null);

            // Creates a speech synthesizer using the default speaker as audio output
            SpeechSynthesizer synthesizer = SpeechSynthesizer.FromConfig(config);
            assert(synthesizer != null);

            SpeechSynthesizer synthesizer1 = SpeechSynthesizer.FromConfig(config);


            SpeechSynthesisResult result = synthesizer.SpeakTextAsync(txt.toString()).Get();

            // Checks result
            if (result.getReason().equals(ResultReason.SynthesizingAudioCompleted)){
                txt.setText("The text has been said.");
            }
            else if (result.getReason().equals(ResultReason.Canceled)){
                SpeechSynthesisCancellationDetails cancellation = SpeechSynthesisCancellationDetails.FromResult(result);
                txt.setText("CANCELED: Reason ="+cancellation.getReason());
                if(cancellation.getReason().equals(CancellationReason.Error)){
                    txt.append("ErrorCode = "+cancellation.getErrorCode()+" / ErrorDetails = "+cancellation.getErrorDetails()+" / Did you update the subscription info ?");
                }
            }
            synthesizer.delete();

        } catch (Exception ex) {
            Log.e("SpeechSDKDemo", "unexpected " + ex.getMessage());
            assert(false);
        }
    }

В журнале я вижу следующее:

E/ples.quickstar: No implementation found for void com.microsoft.cognitiveservices.speech.internal.carbon_javaJNI.swig_module_init() (tried Java_com_microsoft_cognitiveservices_speech_internal_carbon_1javaJNI_swig_1module_1init and Java_com_microsoft_cognitiveservices_speech_internal_carbon_1javaJNI_swig_1module_1init__)
D/AndroidRuntime: Shutting down VM


    --------- beginning of crash
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.microsoft.cognitiveservices.speech.samples.quickstart, PID: 4106
    java.lang.IllegalStateException: Could not execute method for android:onClick
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:389)
        at android.view.View.performClick(View.java:6597)
        at...

Может кто-нибудь мне помочь?

1 Ответ

0 голосов
/ 03 мая 2019

Я искал, совместим ли Microsoft Speech API с Java, и ответ - нет. Это также кажется немного очевидным, потому что Microsoft = C ++ / C #, который ничем не похож на Java. Кроме того, в своем посте вы упомянули Быстрый старт . При этом используется Cognitive Services Speech SDK, а не Microsoft SAPI.

Тем не менее, существуют встроенные библиотеки Java, позволяющие преобразовывать текст в речь. Вот запись , связанная с механизмами преобразования текста в речь. Вот еще информация об этом. Для Android также доступны библиотеки:

...