Java 中的语音处理2024 年 9 月 10 日 | 阅读 7 分钟 Java 编程语言通过 **Java Speech API** 的内置接口,可以实现将文本转换为人类可识别的语音。它用于增强用户体验和便捷性。该 API 定义了一个跨平台 API,用于支持命令和控制识别器以及语音合成器。**文本转语音** (TTS) 或 **朗读** 是一种辅助技术,它使用户能够听到数字文本。辅助技术是为残疾人士构建的辅助、适应性和康复设备的工具。 如今,语音处理在各种应用和自助服务终端中得到广泛应用。一个例子是智能手机中的文本转语音辅助功能,以及像 Domino's 这样的应用程序,它们会朗读选项/菜单给用户。 让我们详细了解 Java Speech API 以及如何将文本转换为语音。 在 Java 中转换文本为语音Java Speech API (JSAPI)Java Speech API 允许 Java 应用程序在用户界面中启用语音技术。Java Speech API 定义的跨平台 API 支持命令控制识别器、听写系统和语音合成器。它不包含在 Java Development Kit 中,因此我们需要第三方语音 API 来鼓励提供多种实现。Java Speech 只是一个规范,它没有自己的实现。 在本节中,我们将使用 FreeTTS 的开源实现,但也有其他实现,例如 Cloudscape。 考虑 FreeTTS 相关以下类,可用于将文本转换为语音。 javax.speech.Central 类这是一个单例类,包含在“javax.speech”包中。它是访问语音引擎功能的主要接口。它是所有语音和输出能力的第一个接入点。availableSynthesizers 和 createSynthesizer 等方法仅属于该类。它提供了检测、选择和创建语音识别和语音合成器的能力。 javax.speech.synthesis.SynthesiserModeDesc 类该类保存了合成器所有必需的属性。属性列表包括引擎名称、模式名称、区域设置和正在运行的合成器。 引擎名称用于引用程序中使用的引擎的名称。模式名称属性特定于引擎,并将合成器限制在能够朗读文本的合成器中。区域设置属性用于限制国际合成器。最后,正在运行的合成器属性用于将返回的合成器限制为仅那些已加载到内存中的合成器。 引擎:它定义在 **javax.speech** 包中,并被视为所有其他语音引擎的父接口。它包含 **Recognizer** 和 **synthesizer**。因此,语音输入和语音输出可以轻松完成。 用于创建语音引擎的方法是 createRecognizer() 和 createSynthesizer()。这两个方法都只接受一个参数 EngineModeDesc,它定义了创建引擎所需的所有属性。作为参数传递的是 RecognizerModeDesc 或 SynthesizerModeDesc 等子类之一。 模式描述符的作用是定义引擎所需的所有属性集。例如,SynthesizerModeDesc 可以描述一个带有男声的瑞士德语合成器。类似地,RecognizerModeDesc 可以描述一个支持日语听写的识别器。 javaxspeech.synthesis.Synthesizer 类它也被定义为一个接口,提供语音合成功能作为主要访问方式。在使用合成器之前,必须先分配合成器。SynthesizerModeDesc 添加了以下两个属性,第一个是合成器提供的声音列表,另一个是合成器启动时要加载的声音。 第三方语音 APIJava 编程语言提供了以下第三方语音 API 来将文本转换为语音。
让我们详细讨论上面提到的库。 FreeTTSFreeTTS 是一个完全用 Java 编程语言编写的开源编译系统。它是一个小巧、快速的运行时开源文本转语音合成引擎。当使用 FreeTTS API 时,计算机可以真正地说话。通俗地说,它仅仅是人类语音的人工合成,将普通文本转换为语音。 为了在 Java 中实现语音合成,请遵循以下步骤。
Java 中流行的文本转语音转换包如下: 1. 包 javax.speech “javax.speech”包定义了定义引擎基本功能的所有类和接口。语音合成器和语音识别器都是语音引擎实例。“javax.speech.synthesis”和“javax.speech.recognition”包扩展了语音合成器和语音识别器的基本功能和特定能力。 让我们看看在应用程序中使用语音引擎的基本流程
考虑以下将文本转换为语音的 Java 程序。 TextToSpeechExample2.java 要获得输出,请执行程序并收听我们在上面程序中指定的文本。 2. 包 com.sun.speechcom.sun.speech 包定义了定义引擎基本功能的所有类和接口。com.sun.speech.freetts 包含 FreeTTS 合成引擎的实现。大多数与语言和语音无关的代码可以在这里找到。 JSAPI 还允许我们通过使用 setRate()、setPitch() 和 setVolume() 等方法来设置语速、音高和音量。例如,请考虑以下 Java 程序。 Voice它是 FreeTTS 的中央处理点,它接收 FreeTTSSpeakable 作为输入,并将与之相关的文本转换为语音并生成相应的音频。Voice 对象通过 Voice.speak 方法接受 FreeTTSSpeakable。 VoiceManager它是 FreeTTS 可用声音的中央存储库。它用于获取声音。 考虑以下导入 com.sun.speech 包并使用上述方法的 Java 程序。 TextToSpeech.java 要获得输出,请执行程序并收听我们在上面程序中指定的文本。 下一主题Java 输出格式化 |
Java 编程语言允许我们创建不同类型的应用程序,如窗口应用程序或 Web 应用程序。用户界面是在开发应用程序时的一个重要因素。Java 应用程序的 GUI 可以使用 Java 编程中可用的不同颜色进行交互。Java 的图形...
5 分钟阅读
ArrayList 是 Java Collection 框架中的一个类。它使用动态数组来存储对象。它与 Array 非常相似,但它没有大小限制。我们可以随时添加或删除元素。我们可以存储...
阅读 8 分钟
java.text.FieldPosition 类包含 getEndIndex() 函数。要查找 FieldPosition 对象中位于最后一个字符之前的字符的索引,请使用 FieldPosition 类。语法:public int getEndIndex() 参数:此方法不接受任何参数。返回值:字符...
阅读 2 分钟
Java 8 与 Java 11 Java 被程序员使用了几代人,然而,它通过不同的版本有了很大的发展。自 1996 年 Java 1.0 发布以来,它现在构成了平台独立编程的基础。J2SE 1.2(也称为 Java 2)引入了...
阅读 6 分钟
与原始类型类似,Java 使将对象作为参数传递给方法变得更加容易。重要的是要认识到,将对象作为参数传递仅仅传递了指向该对象的引用,而不是它的副本。这意味着对该对象所做的任何更改...
5 分钟阅读
给出了一个数字n。我们的任务是找到数字n!中存在的数字的总数。示例1:输入整数n = 9输出:6说明:9!的值为9 x 8 x 7 x 6 x 5 x 4 x 3 x...
5 分钟阅读
在 Java 中,构造函数是一种特殊类型的方法,其名称与类名相同。在内部,构造函数在创建类对象时始终被调用。它用于初始化对象的 state。同样……
阅读 2 分钟
Java中的宏是简化代码和提高代码可读性的强大且必不可少的工具。虽然Java本身不像某些其他编程语言那样原生支持宏,但开发人员通常会使用各种技术和库来实现宏。在本节中,我们将探讨什么是...
阅读 4 分钟
Java 是一种通用且广泛使用的编程语言,它提供了一系列功能,使编程高效且灵活。其中一项功能是动态变量。动态变量提供了一种强大的方式来管理数据并在运行时对其进行操作。在本节中,我们将深入探讨……
阅读 3 分钟
C 语言 C 是一种中级、编译型、通用编程语言,它采用自顶向下的方法来开发应用程序。它由 Dennis Ritchie 于 1970 年在贝尔实验室为 Unix 操作系统开发。它非常适合开发固件和可移植应用程序。示例 #include ...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India