Java 把文本转换为语音
Java Speech API: Java Speech API允许Java应用程序将语音技术纳入其用户界面。它定义了一个跨平台的API来支持命令和控制识别器、口述系统和语音合成器。
Java Speech支持语音合成,即在书面输入的基础上由机器生成口语的过程。
重要的是要记住,Java Speech只是一个规范,即不包括实现。因此,第三方提供了实现方法。 javax.speech包 定义了识别器、合成器和其他语音引擎的通用功能。 javax.speech.synthesis 包为合成器扩展了这个基本功能。
我们将了解java API将文本转换为语音所需要的东西
- Engine: 语音包内有引擎接口。”语音引擎 “是旨在处理语音输入或语音输出的系统的通用术语。
import javax.speech.Engine;
- Central: 中心提供定位、选择和创建语音识别器和语音合成器的能力。
import javax.speech.Central;
- SynthesizerModeDesc: SynthesizerModeDesc扩展了EngineModeDesc,增加了语音合成器的特定属性。
import javax.speech.synthesis.SynthesizerModeDesc;
- Synthesizer: Synthesizer接口提供对语音合成能力的主要访问。SynthesizerModeDesc增加了两个属性。合成器提供的声音列表 语音在合成器启动时将被加载。
import javax.speech.synthesis.Synthesizer;
下面是一个名为FreeTTS的Java语音合成的开源实现,以步骤的形式。
- Download the FreeTTS in the form of zip folder from here
- Extract the zip file and go to
freetts-1.2.2-bin/freetts-1.2/lib/jsapi.exe
- 打开jsapi.exe文件并安装它。
- 这将创建一个名为jsapi.jar的jar文件。这是包含FreeTTS库的JAR库,将被包含在项目中。
- 在你的IDE中创建一个新的Java项目。
- 包括这个jsapi.jar文件到你的项目中。
- 现在把下面的代码复制到你的项目中
- 执行该项目,得到以下预期输出。
以下是上述项目的代码。
// Java code to convert text to speech
import java.util.Locale;
import javax.speech.Central;
import javax.speech.synthesis.Synthesizer;
import javax.speech.synthesis.SynthesizerModeDesc;
public class TextSpeech {
public static void main(String[] args)
{
try {
// Set property as Kevin Dictionary
System.setProperty(
"freetts.voices",
"com.sun.speech.freetts.en.us"
+ ".cmu_us_kal.KevinVoiceDirectory");
// Register Engine
Central.registerEngineCentral(
"com.sun.speech.freetts"
+ ".jsapi.FreeTTSEngineCentral");
// Create a Synthesizer
Synthesizer synthesizer
= Central.createSynthesizer(
new SynthesizerModeDesc(Locale.US));
// Allocate synthesizer
synthesizer.allocate();
// Resume Synthesizer
synthesizer.resume();
// Speaks the given text
// until the queue is empty.
synthesizer.speakPlainText(
"GeeksforGeeks", null);
synthesizer.waitEngineState(
Synthesizer.QUEUE_EMPTY);
// Deallocate the Synthesizer.
synthesizer.deallocate();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
输出:
参考资料
- https://docs.oracle.com/cd/E17802_01/products/products/java-media/speech/forDevelopers/jsapi-doc/javax/speech/package-summary.html
- https://www.javatpoint.com/q/5931/java-code-for-converting-audio-to-text-and-video-to-audio
- http://www.oracle.com/technetwork/java/jsapifaq-135248.html