36
Java Speech API de Java JSAPI

Java Speech API

Embed Size (px)

DESCRIPTION

Breve descripcion sobre el API de Java...

Citation preview

Page 1: Java Speech API

Java SpeechAPI de Java JSAPI

Page 2: Java Speech API

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

Page 3: Java Speech API

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

Page 4: Java Speech API

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

Page 5: Java Speech API

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

Page 6: Java Speech API

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

Page 7: Java Speech API

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

Page 8: Java Speech API

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

Page 9: Java Speech API

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

Page 10: Java Speech API

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.

Page 11: Java Speech API

Here comes your footer Page 11

Motores del Habla

Page 12: Java Speech API

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.

Page 13: Java Speech API

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.

Page 14: Java Speech API

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.

Page 15: Java Speech API

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.  

Page 16: Java Speech API

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.  

Page 17: Java Speech API

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. 

Page 18: Java Speech API

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);

Page 19: Java Speech API

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);}

Page 20: Java Speech API

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);

}

Page 21: Java Speech API

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.  

Page 22: Java Speech API

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.

Page 23: Java Speech API

Here comes your footer Page 23

JSAPI Docs

Page 24: Java Speech API

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

Page 25: Java Speech API

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.

Page 26: Java Speech API

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

Page 27: Java Speech API

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

Page 28: Java Speech API

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.

Page 29: Java Speech API

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.

Page 30: Java Speech API

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.

Page 31: Java Speech API

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..

Page 32: Java Speech API

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

Page 33: Java Speech API

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.

Page 34: Java Speech API

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.

Page 35: Java Speech API

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/

Page 36: Java Speech API

Here comes your footer Page 36

FIN