gpt4 book ai didi

java - 在 Android 的 java 中使用 Microsoft Speech API 文本转语音?

转载 作者:行者123 更新时间:2023-12-02 06:06:55 28 4
gpt4 key购买 nike

我正在尝试在 Android 的 java 项目中使用 Microsoft Speech API 文本转语音。它不起作用。可以在java中使用这个API吗?

语音转文本功能正在运行,我发现 the Quickstart并且使用起来没有任何问题。

但是,没有文本转语音的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...

有人可以帮助我吗?

最佳答案

我会建议一个替代方案。为什么不尝试使用 Windows tts,而是将文本发送到可以从 java 代码执行的 powershell 命令:

 String[] command = {"powershell.exe", "Add-Type -AssemblyName System.Speech; (New-Object System.Speech.Synthesis.SpeechSynthesizer).Speak('" + message +"');"};
try {
ProcessBuilder pb = new ProcessBuilder(command);
Process process = pb.start();
System.out.format("Process exit code: %d", process.waitFor());
ProcessInputOutput.readStdnOutput(process);
}
catch (Exception e){
e.printStackTrace();
}

关于java - 在 Android 的 java 中使用 Microsoft Speech API 文本转语音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55936545/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com