Java SpeechAPI de Java JSAPI
Here comes your footer Page 2
Java Speech API
La API de Java Speech (JSAPI) es una extensión de la plataforma Java.
Las extensiones son paquetes de clases escritos en lenguaje de programación java (u otro código nativo asociado) que los desarrolladores de aplicaciones pueden utilizar para extender la funcionalidad de la plataforma Java.
Concepto
Here comes your footer Page 3
Java Speech API
Java Speech API 1.0 fue lanzado por primera vez por Sun en 1998 y define los paquetes tanto para el Reconocimiento de Voz y Síntesis de Voz.
Todas las implementaciones JSAPI disponibles en la actualidad son compatible con 1.0 y se continua trabajando con la version 2.0
Historia
Here comes your footer Page 4
Java Speech API
Proveer soporte para sintetizadores de voz y para sistemas de reconocimiento de habla (tanto aquellos de Control por Comandos como los de Dictado).
Ser simple, compacto y fácil de aprender.
Permitir el acceso al estado del arte de la tecnología del habla.
Obejtivos de Diseño
Here comes your footer Page 5
Java Speech API
Soportar la integración con otras capacidades de la plataforma Java, como por ejemplo la API de Java Media.
Proveer una interfaz multiplataforma y multiproveedor robusta para la síntesis y reconocimiento del habla, permitiendo a los desarrolladores escribir aplicaciones que no dependen de las características propias de una plataforma o de un motor de voz.
Obejtivos de Diseño
Here comes your footer Page 6
Java Speech API
Mediante la utilización de la Interfaz Nativa Java (JNI) y las envolturas de SW Java (Java SW wrappers) es posible implementar la API de Java Speech en el nivel superior del SW de habla existente.
Implementaciones
Implementaciones Nativas
Here comes your footer Page 7
Java Speech API
Los sintetizadores y reconocedores de habla pueden ser escritos en Java.
Estas implementaciones tienen el beneficio de la portabilidad y de las mejoras continuas en la velocidad de ejecución de las máquinas virtuales Java.
Implementaciones
Implementaciones Java
Here comes your footer Page 8
Java Speech API
Estas aplicaciones se implementan generalmente sobre HW dedicado capaz de soportar un gran número de conexiones simultáneas.
Las capacidades de reconocimiento y síntesis de habla en este HW puede ser envuelto con software Java para soportar la JSAPI como un tipo especial de implementación nativa.
Implementaciones
Implementaciones Telefonicas
Here comes your footer Page 9
Java Speech API
Para utilizar JSAPI se debe contar con requerimientos mínimos de HW y SW. Los requerimientos individuales de los sintetizadores y reconocedores de habla varían mucho entre uno y otro, por lo que el usuario deberá analizarlos cuidadosamente al momento de elegir.
Requerimientos
Software de habla: se debe disponer de un sintetizador o reconocedor de habla compatible con JSAPI
Here comes your footer Page 10
Java Speech APIRequerimientos
Requerimientos del sistema: es necesario controlar los requerimientos mínimos de memoria, CPU y espacio en disco al momento de adquirir un producto de habla.
HW de audio: los sintetizadores de habla requieren salida de audio, en tanto que los reconocedores requieren micrófonos. Los sistemas de dictado requieren placas de sonido de buena calidad para funcionar de manera óptima.
Here comes your footer Page 11
Motores del Habla
Here comes your footer Page 12
Motores del HablaConcepto
El paquete javax.speech de la JSAPI define una representación abstracta por SW.
Se denomina motor de habla al sistema diseñado para tratar con las entradas o salidas de habla.
Los sintetizadores y reconocedores de habla son instancias del motor de habla.
Los sistemas de verificación del hablante y los de identificación del hablante también son motores de habla, aunque no son soportados por la JSAPI.
Here comes your footer Page 13
Motores del HablaConcepto
Este paquete define clases e interfaces que definen la funcionalidad básica del motor.
Los paquetes javax.speech.synthesis y javax.speech.recognition extienden y aumentan la funcionalidad básica para definir las capacidades específicas de los sintetizadores y reconocedores de habla.
Here comes your footer Page 14
Motores del Habla
Los pasos básicos para utilizar un motor de habla en una aplicación son:
1. Identificar los requerimientos funcionales de la aplicación
2. Localizar y crear un motor que cubra esos requerimientos
3. Asignar los recursos necesarios para el motor
4. Configurar el motor
5. Comenzar la operación del motor
6. Usar el motor
7. Desasignar los recursos del motor.
* Los pasos 4 a 6 son diferentes según se trate de motores de reconocimiento o síntesis de habla. Los demás pasos son iguales para ambos tipos.
Here comes your footer Page 15
Motores del HablaPropiedades
A continuación se listan las propiedades básicas de los motores de habla:
Propiedades básicas de selección de motor: EngineModeDesc
Propiedad Descripción
EngineNameEs una cadena que define el nombre del motor de habla, por ejemplo “Málaga Dictation System”.
ModeNameEs una cadena que define un modo específico de operación, por ejemplo “Málaga Spanish dictador”.
Locale
Un objeto java.util.Locale que indica el idioma soportado por el motor y, opcionalmente, alguna variante (como podría ser inglés británico o inglés estadounidense). La clase Locale usa los códigos ISO 639 para idioma y 3166 para país. Por ejemplo: Locale("fr", "ca") representa el idioma francés canadiense en tanto que Locale("en", "") representa el idioma inglés.
Running
Es un objeto booleano cuyo valor es TRUE si el motor está corriendo en la plataforma y FALSO si no es así. La selección de un motor que está corriendo permite compartir recursos y ayuda a acelerar la creación del objeto motor de habla.
Here comes your footer Page 16
Motores del HablaPropiedades
A continuación se listan las propiedades básicas de los motores de habla:
Propiedades de selección del Sintetizador: SynthesizerModeDesc
Propiedad Descripción
List ofvoices
Es un arreglo de voces que el sintetizador puede producir. Cada voz es definida por una instancia de la clase Voice que encapsula el nombre de la voz, el género, la edad y el estilo.
Here comes your footer Page 17
Motores del HablaPropiedades
A continuación se listan las propiedades básicas de los motores de habla:
Propiedades de selección del Reconocedor: RecognizerModeDesc
Propiedad Descripción
DictationsupportedEs un valor booleano que indica si este modo de operación del reconocedor soporta una gramática de dictado.
Speaker profiles
Es una lista de objetos de Speakerprofile para usuarios que entrenaron al reconocedor. Los reconocedores que no soportan entrenamiento retornan una lista nula.
Here comes your footer Page 18
Motores del Habla
• La forma más fácil de crear un motor de habla es requerir el motor por defecto.
• Esto es adecuado cuando la aplicación requiere un motor para el idioma local y no tiene requerimientos funcionales específicos.
• La clase Central en el paquetejavax.speech.package se usa para localizar y crear motores.
• La creación de un motor por defecto usa dos métodos estáticos de la clase Central:
Synthesizer Central.createSynthesizer(EngineModeDesc mode); Recognizer Central.createRecognizer(EngineModeDesc mode);
Here comes your footer Page 19
Motores del Habla
El siguiente código permite crear un reconocedor y sintetizador por defecto:
import javax.speech.*; import javax.speech.synthesis.*; import javax.speech.recognition.*;
{ // Get a synthesizer for the default locale
Synthesizer synth = Central.createSynthesizer(null);
// Get a recognizer for the default locale
Recognizer rec = Central.createRecognizer(null);}
Here comes your footer Page 20
Motores del Habla
A continuación se presenta un ejemplo que muestra un método para crear un reconocedor de dictado para el locale por defecto:
/** Get a dictation recognizer for the default locale */Recognizer createDictationRecognizer()
{ // Create a mode descriptor with all required features RecognizerModeDesc required = new RecognizerModeDesc();
required.setDictationGrammarSupported(Boolean.TRUE); return Central.createRecognizer(required);
}
Here comes your footer Page 21
Motores del HablaEventos de Habla
Los eventos de JSAPI siguen el modelo de eventos de JavaBeans. Los eventos son emitidos hacia un “oyente” adjunto al objeto involucrado en la generación del evento. Todos los eventos de habla se derivan de la clase SpeechEvent del paquete javax.speech.
Eventos de habla: paquete javax.speech
Nombre Descripción
SpeechEvent Clase padre de todos los eventos de habla.
EngineEventSeñala un cambio en el estado del motor de habla.
AudioEvent Señala un evento de entrada o salida de audio.
EngineErrorEventEs una sub clase que señala la ocurrencia de un problema asincrónico en el motor.
Here comes your footer Page 22
Motores del HablaEventos de Habla
Eventos de habla: paquete javax.speech.synthesis
Nombre Descripción
SynthesizerEventExtiende EngineEvent para eventos especializados de un sintetizador.
SpeakableEventSeñala el progreso en la salida de texto sintetizado.
Eventos de habla: paquete javax.speech.recognition
Nombre Descripción
RecognizerEventExtiende EngineEvent para eventos especializados de un reconocedor.
GrammarEventSeñala una actualización o un cambio de estado de la gramática de reconocimiento.
ResultEventSeñala cambios de estado y de datos de los resultados del reconocimiento
RecognizerAudioEventExtiende AudioEvent con eventos para iniciar y parar el habla y la actualización de niveles de audio.
Here comes your footer Page 23
JSAPI Docs
Here comes your footer Page 24
Java Speech APIPaquete javax.speech
Resumen Interface
AudioListenerLa interfaz de escucha para recibir eventos asociados con la entrada de audio o de salida de un motor.
AudioManagerEl AudioManager es proporcionado por un motor de voz - un reconocedor o Sintetizador - para permitir que una aplicación de control de entrada / salida de audio y para supervisar los eventos relacionados con el audio
EngineCentralProporciona una lista de objetos EngineModeDesc que definen los modos de funcionamiento disponibles de un motor de voz
EngineCreateLa interfaz EngineCreate se implementa objetos EngineModeDesc obtenidos a través de las llamadas a los objetos EngineCentral de cada motor de voz registrada en la clase Central.
EngineLa interfaz del motor es la interfaz principal para todos los motores de voz, incluyendo el reconocedor y sintetizador.
EngineListenerMétodos de definición de interfaz que se llamará cuando se producen eventos de cambio de estado de un motor de voz
EnginePropertiesUn objeto EngineProperties define el conjunto de propiedades de tiempo de ejecución de un motor.
VocabManager Interfaz para la gestión de las palabras que utiliza un motor de voz
Here comes your footer Page 25
Java Speech APIPaquete javax.speechResumen Class
AudioAdapter Una aplicación trivial de la interfaz AudioListener que recibe eventos de audio de un motor
AudioEvent Describe eventos asociados con la entrada / salida de audio para un motor.
Central La clase central es el punto de acceso inicial a todas las entradas de voz y capacidades de salida
EngineAdapter Aplicación Trivial de la interfaz EngineListener que recibe un EngineEvents.
EngineErrorEventEngineErrorEvent es una notificación asíncrona de un error interno en el motor que evita el comportamiento normal de ese motor.
EngineEvent EngineEvent notifica cambios en el estado de un sintetizador de voz o el motor de reconocimiento
EngineList EngineList es un contenedor para un conjunto de objetos EngineModeDesc..
EngineModeDescEngineModeDesc proporciona información acerca de un modo de funcionamiento específico de un motor de voz.
SpeechEvent La clase de evento raíz para todos los eventos de habla.
SpeechPermission Esta clase representa los permisos del habla.
Word La clase Word proporciona una representación estándar de palabras decible para motores de voz.
Here comes your footer Page 26
Java Speech APIPaquete javax.speech
Resumen Exception
AudioExceptionSe encontró un problema de conexión de audio a / desde un motor de voz.
EngineExceptionLas señales que se produjo un error al intentar crear o acceder a un motor de síntesis de voz, el motor de reconocimiento de voz u objeto EngineCentral
SpeechExceptionSeñales de que se ha producido una excepción de Java Speech API.
VendorDataExceptionLas señales de que un problema se ha encontrado cargar o guardar algún tipo de datos específicos del proveedor
Here comes your footer Page 27
Java Speech APIPaquete javax.speech
Resumen Error
EngineStateErrorSeñala un error causado por una llamada a un método ilegal de un motor de voz.
SpeechErrorIndica que se ha producido un error en el paquete javax.speech
Here comes your footer Page 28
Java Speech APIPaquete javax.speech.recognition
Resumen Interface
DictationGrammar Proporciona acceso a las capacidades de dictado de un reconocedor.
FinalDictationResultProporciona información sobre el resultado finalizado una expresión que coincide con un DictationGrammar.
FinalResultFinalResult es una extensión de la interfaz de resultado que proporciona información sobre un resultado que haya sido finalizado - es decir, el reconocimiento es completa.
FinalRuleResultProporciona información sobre el resultado finalizado una expresión que coincide con un RuleGrammar
GrammarInterfaz de Padres con el apoyo de todas las gramáticas de reconocimiento incluyendo DictationGrammar y RuleGrammar.
GrammarListenerA GrammarListener recibe notificaciones de eventos de cambio de estado de una gramática..
RecognizerAudioListenerSe extiende el conjunto de eventos de audio de un motor para un reconocedor añadiendo un evento de nivel de audio.
Recognizer Un reconocedor proporciona acceso a las capacidades de reconocimiento de voz.
Here comes your footer Page 29
Java Speech APIPaquete javax.speech.recognition
RecognizerListenerDefine una extensión de la interfaz EngineListener para eventos específicos asociados con un reconocedor.
RecognizerProperties Permite el control de las propiedades de un reconocedor
ResultUn resultado se emite por un reconocedor ya que reconoce una expresión de entrada que coincide con una gramática activa.
ResultListenerLos métodos de un ResultListener recibir notificaciones de los eventos relacionados con un objeto de resultado.
ResultTokenUna muestra (generalmente una palabra) contenida por un resultado que representa algo oído por un reconocedor.
RuleGrammarInterfaz RuleGrammar describe una gramática que define lo que los usuarios pueden decir por un conjunto de reglas.
SpeakerManager Proporciona el control de SpeakerProfiles un reconocedor.
Here comes your footer Page 30
Java Speech APIPaquete javax.speech.recognition
Resumen Class
GrammarAdapter El adaptador que recibe eventos de gramática..
GrammarEventA GrammarEvent se emite a cada GrammarListener unido a una gramática cuando se producen grandes acontecimientos relacionados con la gramática
GrammarSyntaxDetailDescripción de un problema que se encuentra en una gramática general, vinculado con un GrammarException
RecognizerAdapter El adaptador que recibe eventos de un reconocedor.
RecognizerAudioAdapter Adaptador para una serie de eventos de audio de un reconocedor
RecognizerAudioEventRecognizerAudioEvent Evento emitido para indicar la detección de la voz en el flujo de audio entrante o para indicar periódicamente el nivel de entrada de audio.
RecognizerEvent Evento publicado por aprendidos a través RecognizerListener.
RecognizerModeDescRecognizerModeDesc se extiende la EngineModeDesc con propiedades que son específicas de los reconocedores de voz
ResultAdapter El adaptador que recibe eventos de un objeto de resultado.
Here comes your footer Page 31
Java Speech APIPaquete javax.speech.recognition
ResultEventA ResultEvent es emitida por un objeto de resultado para indicar cambios en las fichas y los movimientos registrados en el estado.
RuleAlternativesRuleAlternatives representa una regla compuesta de un conjunto de sub-reglas alternativa.
RuleCountSe fija un recuento a un objeto de regla contenida para indicar el número de veces que puede ocurrir.
RuleUn objeto de regla es el componente básico de una RuleGrammar y representa todo lo que puede aparecer en el lado derecho de una definición de la regla en Java Formato gramática del habla.
RuleName Un RuleName es una referencia a una regla llamada
RuleParseRepresenta la salida de un análisis sintáctico de un resultado o una cadena contra un RuleGrammar
RuleSequenceRuleSequence es una regla compuesta de una secuencia de sub-reglas que deben ser cada uno habla en orden.
RuleTag RuleTag adjunta una etiqueta a un objeto de regla contenida
RuleToken RuleToken representa texto decible en un RuleGrammar.
SpeakerProfileUn objeto SpeakerProfile se utiliza para identificar cada inscripción por un usuario a un reconocedor..
Here comes your footer Page 32
Java Speech APIPaquete javax.speech.synthesis
Resumen Interface
SpeakableUn objeto que implementa la interfaz Speakable se puede proporcionar para el método de hablar de un sintetizador para ser hablado.
SpeakableListenerLa interfaz de escucha para recibir notificaciones de los eventos durante la salida hablada de un Speakable.
SynthesizerLa interfaz del sintetizador proporciona acceso primario a las capacidades de síntesis de voz.
SynthesizerListenerUna extensión a la interfaz EngineListener para la recepción de la notificación de eventos asociados con un sintetizador.
SynthesizerPropertiesProporciona el control de las propiedades de tiempo de ejecución de un sintetizador
Here comes your footer Page 33
Java Speech APIPaquete javax.speech.synthesis
Resumen Class
SpeakableAdapterAdaptador que recibe eventos asociados a la producción hablada de un objeto Speakable.
SpeakableEvent Evento emitido durante la producción hablada de texto
SynthesizerAdapter Adaptador que recibe eventos asociados con un Sinthetizer.
SynthesizerEventEvento emitido por Sintetizador para indicar un cambio de estado o de otra actividad.
SynthesizerModeDescSynthesizerModeDesc se extiende la EngineModeDesc con propiedades que son específicas a sintetizadores de voz
SynthesizerQueueItem Representa un objeto en la cola de salida de voz de un Synthetizer.
Voice Una descripción de una voz de salida de un sintetizador de voz.
Here comes your footer Page 34
Java Speech APIPaquete javax.speech.synthesis
Exception Resumen
JSMLExceptionLanzado si un problema de sintaxis se encuentra con el texto en el marcado con la voz de lenguaje de marcado de Java.
Here comes your footer Page 35
Bibliografia
• http://www.oracle.com/technetwork/java/jsapifaq-135248.html
• http://docs.oracle.com/cd/E17802_01/products/products/java-media/speech/forDevelopers/jsapi-doc/
• http://www.sicuma.uma.es/sicuma/independientes/argentina08/Liliana/JSAPI.htm
• http://en.wikipedia.org/wiki/Java_Speech_API
• http://cafelojano.wordpress.com/2007/08/13/texto-a-voz-en-java-texto-to-speech/
• http://sourceforge.net/projects/jsapi/
Here comes your footer Page 36
FIN
Top Related