2. 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
3. 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
4. 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
5. 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
6. 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
7. 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
8. 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
9. 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
10. Here comes your footer Page 10
Java Speech API
Requerimientos
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.
12. Here comes your footer Page 12
Motores del Habla
Concepto
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.
13. Here comes your footer Page 13
Motores del Habla
Concepto
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.
14. 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.
15. Here comes your footer Page 15
Motores del Habla
Propiedades
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
EngineName
Es una cadena que define el nombre del motor de habla, por
ejemplo “Málaga Dictation System”.
ModeName
Es 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.
16. Here comes your footer Page 16
Motores del Habla
Propiedades
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.
17. Here comes your footer Page 17
Motores del Habla
Propiedades
A continuación se listan las propiedades básicas de los
motores de habla:
Propiedades de selección del Reconocedor: RecognizerModeDesc
Propiedad Descripción
Dictationsupported
Es 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.
18. 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);
19. 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);}
20. 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);
}
21. Here comes your footer Page 21
Motores del Habla
Eventos 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.
EngineEvent
Señala un cambio en el estado del motor de
habla.
AudioEvent Señala un evento de entrada o salida de audio.
EngineErrorEvent
Es una sub clase que señala la ocurrencia de un
problema asincrónico en el motor.
22. Here comes your footer Page 22
Motores del Habla
Eventos de Habla
Eventos de habla: paquete javax.speech.synthesis
Nombre Descripción
SynthesizerEvent
Extiende EngineEvent para eventos
especializados de un sintetizador.
SpeakableEvent
Señala el progreso en la salida de texto
sintetizado.
Eventos de habla: paquete javax.speech.recognition
Nombre Descripción
RecognizerEvent
Extiende EngineEvent para eventos
especializados de un reconocedor.
GrammarEvent
Señala una actualización o un cambio de estado
de la gramática de reconocimiento.
ResultEvent
Señala cambios de estado y de datos de los
resultados del reconocimiento
RecognizerAudioEvent
Extiende AudioEvent con eventos para iniciar y
parar el habla y la actualización de niveles de
audio.
24. Here comes your footer Page 24
Java Speech API
Paquete javax.speech
Resumen Interface
AudioListener
La interfaz de escucha para recibir eventos asociados con la entrada de audio o de
salida de un motor.
AudioManager
El 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
EngineCentral
Proporciona una lista de objetos EngineModeDesc que definen los modos de
funcionamiento disponibles de un motor de voz
EngineCreate
La 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.
Engine
La interfaz del motor es la interfaz principal para todos los motores de voz, incluyendo
el reconocedor y sintetizador.
EngineListener
Métodos de definición de interfaz que se llamará cuando se producen eventos de
cambio de estado de un motor de voz
EngineProperties
Un 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
25. Here comes your footer Page 25
Java Speech API
Paquete javax.speech
Resumen 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.
EngineErrorEvent
EngineErrorEvent 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..
EngineModeDesc
EngineModeDesc 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.
26. Here comes your footer Page 26
Java Speech API
Paquete javax.speech
Resumen Exception
AudioException
Se encontró un problema de conexión de audio a / desde
un motor de voz.
EngineException
Las 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
SpeechException
Señales de que se ha producido una excepción de Java
Speech API.
VendorDataException
Las señales de que un problema se ha encontrado cargar o
guardar algún tipo de datos específicos del proveedor
27. Here comes your footer Page 27
Java Speech API
Paquete javax.speech
Resumen Error
EngineStateError
Señala un error causado por una llamada a un método ilegal de
un motor de voz.
SpeechError Indica que se ha producido un error en el paquete javax.speech
28. Here comes your footer Page 28
Java Speech API
Paquete javax.speech.recognition
Resumen Interface
DictationGrammar Proporciona acceso a las capacidades de dictado de un reconocedor.
FinalDictationResult
Proporciona información sobre el resultado finalizado una expresión que coincide
con un DictationGrammar.
FinalResult
FinalResult 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.
FinalRuleResult
Proporciona información sobre el resultado finalizado una expresión que coincide
con un RuleGrammar
Grammar
Interfaz de Padres con el apoyo de todas las gramáticas de reconocimiento
incluyendo DictationGrammar y RuleGrammar.
GrammarListener
A GrammarListener recibe notificaciones de eventos de cambio de estado de una
gramática..
RecognizerAudioListener
Se 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.
29. Here comes your footer Page 29
Java Speech API
Paquete javax.speech.recognition
RecognizerListener
Define 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
Result
Un resultado se emite por un reconocedor ya que reconoce
una expresión de entrada que coincide con una gramática
activa.
ResultListener
Los métodos de un ResultListener recibir notificaciones de
los eventos relacionados con un objeto de resultado.
ResultToken
Una muestra (generalmente una palabra) contenida por un
resultado que representa algo oído por un reconocedor.
RuleGrammar
Interfaz 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.
30. Here comes your footer Page 30
Java Speech API
Paquete javax.speech.recognition
Resumen Class
GrammarAdapter El adaptador que recibe eventos de gramática..
GrammarEvent
A GrammarEvent se emite a cada GrammarListener unido a una gramática cuando se producen
grandes acontecimientos relacionados con la gramática
GrammarSyntaxDetail
Descripció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
RecognizerAudioEvent
RecognizerAudioEvent 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.
RecognizerModeDesc
RecognizerModeDesc 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.
31. Here comes your footer Page 31
Java Speech API
Paquete javax.speech.recognition
ResultEvent
A ResultEvent es emitida por un objeto de resultado para indicar cambios en las fichas y
los movimientos registrados en el estado.
RuleAlternatives
RuleAlternatives representa una regla compuesta de un conjunto de sub-reglas
alternativa.
RuleCount
Se fija un recuento a un objeto de regla contenida para indicar el número de veces que
puede ocurrir.
Rule
Un 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
RuleParse
Representa la salida de un análisis sintáctico de un resultado o una cadena contra un
RuleGrammar
RuleSequence
RuleSequence 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.
SpeakerProfile
Un objeto SpeakerProfile se utiliza para identificar cada inscripción por un usuario a un
reconocedor..
32. Here comes your footer Page 32
Java Speech API
Paquete javax.speech.synthesis
Resumen Interface
Speakable
Un objeto que implementa la interfaz Speakable se puede
proporcionar para el método de hablar de un sintetizador
para ser hablado.
SpeakableListener
La interfaz de escucha para recibir notificaciones de los
eventos durante la salida hablada de un Speakable.
Synthesizer
La interfaz del sintetizador proporciona acceso primario a
las capacidades de síntesis de voz.
SynthesizerListener
Una extensión a la interfaz EngineListener para la
recepción de la notificación de eventos asociados con un
sintetizador.
SynthesizerProperties
Proporciona el control de las propiedades de tiempo de
ejecución de un sintetizador
33. Here comes your footer Page 33
Java Speech API
Paquete javax.speech.synthesis
Resumen Class
SpeakableAdapter
Adaptador 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.
SynthesizerEvent
Evento emitido por Sintetizador para indicar un cambio de estado o
de otra actividad.
SynthesizerModeDesc
SynthesizerModeDesc 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.
34. Here comes your footer Page 34
Java Speech API
Paquete javax.speech.synthesis
Exception Resumen
JSMLException
Lanzado si un problema de sintaxis se encuentra con el texto en
el marcado con la voz de lenguaje de marcado de Java.
35. 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/