📜  在Java中将文本转换为语音

📅  最后修改于: 2021-10-19 06:36:15             🧑  作者: Mango

Java Speech API: Java Speech API 允许Java应用程序将语音技术合并到其用户界面中。它定义了一个跨平台的 API 来支持命令和控制识别器、听写系统和语音合成器。

Java Speech 支持语音合成,这意味着机器在书面输入的基础上生成口语的过程。

重要的是要记住, Java Speech 只是一个规范,即不包含任何实现。因此,第三方提供了实现。 javax.speech 包定义了识别器、合成器和其他语音引擎的通用功能。包javax.speech.synthesis扩展了合成器的这一基本功能。

我们将了解Java API 将文本转换为语音需要什么

  1. 引擎:引擎接口在语音包内可用。“语音引擎”是设计用于处理语音输入或语音输出的系统的通用术语。
    import javax.speech.Engine;
  2. Central: Central 提供定位、选择和创建语音识别器和语音合成器的能力。
    import javax.speech.Central;
  3. SynthesizerModeDesc: SynthesizerModeDesc 使用特定于语音合成器的属性扩展 EngineModeDesc。
    import javax.speech.synthesis.SynthesizerModeDesc;
  4. Synthesizer: Synthesizer 接口提供对语音合成功能的主要访问。SynthesizerModeDesc 添加了两个属性: 合成器提供的声音列表 合成器启动时要加载的声音。
    import javax.speech.synthesis.Synthesizer;

下面是一个名为 FreeTTS 的Java Speech Synthesis 的开源实现,以步骤的形式:

  • 从这里下载 zip 文件夹形式的 FreeTTS
  • 解压缩 zip 文件并转到
    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

相关文章:在Python中将文本转换为语音