gpt4 book ai didi

java - 如何让 TTS(文本到语音)在 java netbeans 中工作?

转载 作者:行者123 更新时间:2023-12-01 04:58:41 24 4
gpt4 key购买 nike

我正在尝试在 java 的 netbeans 中使用 TTS。我已解压 JSAPI 文件并将以下 jar 添加到库中

  • cmu_us_kal.jar
  • cmulex.jar
  • en_us.jar
  • freetts.jar
  • cmulex.jar
  • jsapi.jar

当我运行以下代码时:

package demofreetts2;

import javax.speech.*;
import java.util.*;
import javax.speech.synthesis.*;

public class Demofreetts2 {

String speaktext ="";
public void doSpeak(String speak, String voicename)
{
speaktext = speak;
String voiceName = voicename;
try
{
SynthesizerModeDesc desc = new SynthesizerModeDesc(null, "general", Locale.US, null, null);
Synthesizer synthesizer = Central.createSynthesizer(desc);
synthesizer.allocate();
synthesizer.resume();
desc = (SynthesizerModeDesc)synthesizer.getEngineModeDesc();
Voice[] voices = desc.getVoices();
Voice voice = null;
for(int i = 0; i< voices. length; i++)
{
if(voices[i].getName().equals(voiceName))
{
voice = voices[i];
break;
}
}
synthesizer.getSynthesizerProperties().setVoice(voice);
synthesizer.speakPlainText(speaktext, null);
synthesizer.waitEngineState(Synthesizer.QUEUE_EMPTY);
synthesizer.deallocate();
}
catch (Exception e)
{
String message = "missing speech properties in " + System.getProperty("user.home") + "\n";
System.out.println (""+e);
}
}
public static void main (String[]args)
{
Demofreetts2 obj = new Demofreetts2();
obj.doSpeak(args[0],"kevin16");
}
}

我收到以下消息:

**run:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at demofreetts2.Demofreetts2.main(Demofreetts2.java:46)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)**

当我像这样更改主要方法时:

public static void main (String[]args)
{
Demofreetts2 obj = new Demofreetts2();
obj.doSpeak("hello","kevin16");
}

我收到此消息:

**run:
java.lang.NullPointerException
BUILD SUCCESSFUL (total time: 1 second)**

有谁知道我怎样才能让它发挥作用?

我只是一个将字符串转换为语音的程序。

最佳答案

错误 #1:您必须将一些参数传递给 main 方法才能使用 args[0]。请参阅What is "String args[]"? parameter in main method Java获取更多信息。

错误 #2:您在代码中遇到了 NullPointerException,这意味着您尝试在等于 null 的实例上使用方法。使用调试器,或者使用 e.printStackTrace(); 而不是 System.out.println (""+e); 来扩展调试信息,以便知道哪个实例是罪魁祸首。

关于java - 如何让 TTS(文本到语音)在 java netbeans 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13671682/

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