
Un componente React Native para agregar Spokestack a cualquier aplicación Native React.

Instale esta biblioteca con las dependencias de pares
Una línea de una línea para instalar todas las dependencias
npm install react-native-spokestack-tray react-native-spokestack @react-native-community/async-storage react-native-video react-native-haptic-feedback react-native-linear-gradient react-native-permissions$ npm install react-native-spokestack-tray react-native-spokestack
# Used for storing a simple boolean to turn on/off sound
$ npm install @react-native-community/async-storage
# Used to play TTS audio prompts.
# Despite its name, we think this is one of the best
# plugins (if not the best) for playing audio.
# In iOS, Audio and Video are intertwined anyway.
$ npm install react-native-video
# Used to show an animating gradient when Spokestack listens
$ npm install react-native-linear-gradient
# Used to check microphone and speech recognition permissions
$ npm install react-native-permissions
# Used to generate a haptic whenever Spokestack listens.
# This can be turned off, but the dependency is still needed.
$ npm install react-native-haptic-feedbackLuego siga las instrucciones de cada plataforma para vincular la subestima react-nativa a su proyecto:
React-Native-Spokestack utiliza API relativamente nuevas que solo están disponibles en iOS 13+. Asegúrese de establecer su objetivo de implementación en iOS 13.
Primero, abra Xcode y vaya al Proyecto -> Información para establecer el objetivo de implementación de iOS en 13.0 o más.
Además, establezca la implementación en 13.0 bajo Target -> General -> Información de implementación.
Cuando Flipper se introdujo para reaccionar nativo, se establecieron algunas rutas de búsqueda de la biblioteca para Swift. Ha habido un problema de larga data con las rutas de búsqueda predeterminadas en los proyectos de React Native porque se agregó una ruta de búsqueda para Swift 5.0 que evitó que cualquier otra biblioteca React nativa use API solo disponibles en Swift 5.2 o posterior. Spokestack-Ius, una dependencia de react-nativa-spokestack hace uso de estas API y Xcode no se construirá.
Afortunadamente, la solución es bastante simple. Vaya a su objetivo -> Crear configuración y busque "rutas de búsqueda de biblioteca".
Eliminar ""$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)"" de la lista.
Antes de ejecutar pod install , asegúrese de hacer las siguientes ediciones.
platform :ios , '13.0' ¡También necesitamos usar use_frameworks! en nuestro Podfile para apoyar las dependencias escritas en Swift.
target 'SpokestackExample' do
use_frameworks!
#... ¡Por el momento, use_frameworks! No funciona con Flipper, por lo que también necesitamos deshabilitar Flipper. Retire las líneas relacionadas con la aleta en su Podfile. En React Native 0.63.2, se ven así:
# X Remove or comment out these lines X
# use_flipper!
# post_install do |installer|
# flipper_post_install(installer)
# end
# XX Utilizamos permeaciones react-nativas para verificar y solicitar el permiso del micrófono (iOS y Android) y el permiso de reconocimiento de voz (solo iOS). Esta biblioteca separa cada permiso en su propia cápsula para evitar inflar su aplicación con el código que no usa. Agregue las siguientes vainas a su Podfile:
target 'SpokestackTrayExample' do
# ...
permissions_path = '../node_modules/react-native-permissions/ios'
pod 'Permission-Microphone' , :path => " #{ permissions_path } /Microphone.podspec"
pod 'Permission-SpeechRecognition' , :path => " #{ permissions_path } /SpeechRecognition.podspec" React Native 0.64.0 rompió cualquier proyecto usando use_frameworks! en sus podfiles.
Para obtener más información sobre este error, consulte Facebook/React-Native#31149.
Para solucionar este problema, agregue lo siguiente a su Podfile:
# Moves 'Generate Specs' build_phase to be first for FBReactNativeSpec
post_install do | installer |
installer . pods_project . targets . each do | target |
if ( target . name &. eql? ( 'FBReactNativeSpec' ) )
target . build_phases . each do | build_phase |
if ( build_phase . respond_to? ( :name ) && build_phase . name . eql? ( '[CP-User] Generate Specs' ) )
target . build_phases . move ( build_phase , 0 )
end
end
end
end
end Elimine su carpeta existente de podfile.lock y pods para asegurar que no hay conflictos, luego instale las vainas:
$ npx pod-installAgregue lo siguiente a su información. Placa para habilitar los permisos. En Xcode, también asegúrese de que su objetivo de implementación de iOS esté configurado en 13.0 o superior.
< key >NSMicrophoneUsageDescription</ key >
< string >This app uses the microphone to hear voice commands</ string >
< key >NSSpeechRecognitionUsageDescription</ key >
< string >This app uses speech recognition to process voice commands</ string > ¡Mientras Flipper trabaja para arreglar su POD para use_frameworks! , debemos deshabilitar a Flipper. Ya eliminamos las dependencias de la aleta de las cápsulas anteriores, pero sigue habiendo algún código en AppDelegate.m que importa Flipper. Hay dos formas de solucionar esto.
-DFB_SONARKIT_ENABLED=1 de los banderas.En nuestra aplicación de ejemplo, hemos hecho la Opción 1 y nos dejamos en el código Flipper en caso de que lo haga funcionar en el futuro y podamos agregarlo de nuevo.
# import < AVFoundation/AVFoundation.h > Establezca la categoría de audiossion. Hay varias configuraciones que funcionan.
La siguiente es una sugerencia que debería adaptarse a la mayoría de los casos de uso:
- ( BOOL )application:(UIApplication *)application didFinishLaunchingWithOptions:( NSDictionary *)launchOptions
{
AVAudioSession *session = [AVAudioSession sharedInstance ];
[session setCategory: AVAudioSessionCategoryPlayAndRecord
mode: AVAudioSessionModeDefault
options: AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionAllowAirPlay | AVAudioSessionCategoryOptionAllowBluetoothA2DP | AVAudioSessionCategoryOptionAllowBluetooth
error: nil ];
[session setActive: YES error: nil ];
// ... El uso de ejemplo utiliza el ASRS proporcionado por el sistema ( AndroidSpeechRecognizer y AppleSpeechRecognizer ). Sin embargo, AndroidSpeechRecognizer no está disponible en el 100% de los dispositivos. Si su aplicación admite un dispositivo que no tiene reconocimiento de voz incorporado, use Spokestack ASR en su lugar configurando el profile en un perfil de Spokestack utilizando el PROP profile .
Consulte nuestra documentación ASR para obtener más información.
// ...
ext {
// Minimum SDK is 21
minSdkVersion = 21
// ...
dependencies {
// Minimium gradle is 3.0.1+
// The latest React Native already has this
classpath( " com.android.tools.build:gradle:3.5.3 " ) Agregue los permisos necesarios a su AndroidManifest.xml . El primer permiso a menudo ya está allí. El segundo es necesario para usar el micrófono.
<!-- For TTS -->
< uses-permission android : name = " android.permission.INTERNET " />
<!-- For wakeword and ASR -->
< uses-permission android : name = " android.permission.RECORD_AUDIO " />
<!-- For ensuring no downloads happen over cellular, unless forced -->
< uses-permission android : name = " android.permission.ACCESS_NETWORK_STATE " /> import SpokestackTray , { listen } from 'react-native-spokestack-tray'
// ...
export default function ConversationHandler ( { navigation } ) {
return (
< SpokestackTray
clientId = { process . env . SPOKESTACK_CLIENT_ID }
clientSecret = { process . env . SPOKESTACK_CLIENT_SECRET }
handleIntent = { ( intent , slots , utterance ) => {
switch ( intent ) {
// These cases would be for all
// the possible intents defined in your NLU.
case 'request.select' :
// As an example, search with some service
// with the given value from the NLU
const recipe = SearchService . find ( slots . recipe ?. value )
// An example of navigating to some scene to show
// data, a recipe in our example.
navigation . navigate ( 'Recipe' , { recipe } )
return {
node : 'info.recipe' ,
prompt : 'We found your recipe!'
}
default :
return {
node : 'welcome' ,
prompt : 'Let us help you find a recipe.'
}
}
} }
// The NLU models are downloaded and then cached
// when the app is first installed.
// See https://spokestack.io/docs/concepts/nlu
// for more info on NLU.
nlu = { {
nlu : 'https://somecdn/nlu.tflite' ,
vocab : 'https://somecdn/vocab.txt' ,
metadata : 'https://somecdn/metadata.json'
} }
/>
)
} Para incluir archivos de modelo localmente en su aplicación (en lugar de descargarlos de un CDN), también debe agregar las extensiones necesarias para que Babel pueda incluir los archivos. Para hacer esto, edite su metro.config.js .
const defaults = require ( 'metro-config/src/defaults/defaults' )
module . exports = {
resolver : {
// json is already in the list
assetExts : defaults . assetExts . concat ( [ 'tflite' , 'txt' , 'sjson' ] )
}
}Luego incluya archivos de modelo utilizando objetos de origen:
< SpokestackTray
clientId = { process . env . SPOKESTACK_CLIENT_ID }
clientSecret = { process . env . SPOKESTACK_CLIENT_SECRET }
handleIntent = { handleIntent }
wakeword = { {
filter : require ( './filter.tflite' ) ,
detect : require ( './detect.tflite' ) ,
encode : require ( './encode.tflite' )
} }
nlu = { {
model : require ( './nlu.tflite' ) ,
vocab : require ( './vocab.txt' ) ,
// Be sure not to use "json" here.
// We use a different extension (.sjson) so that the file is not
// immediately parsed as json and instead
// passes a require source object to Spokestack.
// The special extension is only necessary for local files.
metadata : require ( './metadata.sjson' )
} }
/> Esto no es necesario. Pase las URL remotas a las mismas opciones de configuración y los archivos se descargarán y almacenarán en caché cuando llame por primera vez initialize .
Consulte la guía contribuyente para aprender a contribuir al repositorio y al flujo de trabajo de desarrollo.
<SpokestackTray /> accesorios de componentes • Ancho de botones Optional : number (predeterminado: 60 )
Ancho (y altura) del botón de micrófono
src/spokestacktray.tsx: 132
• Clientid : string
Sus tokens Spokestack generaron en su cuenta de Spokestack en https://spokestack.io/account. Cree una cuenta gratis y luego genere un token. Esto es desde el campo "ID".
src/spokestacktray.tsx: 74
• ClientSecret : string
Sus tokens Spokestack generaron en su cuenta de Spokestack en https://spokestack.io/account. Cree una cuenta gratis y luego genere un token. Esto es del campo "secreto".
src/spokestacktray.tsx: 81
• Optional CloseLay : number (predeterminado: 0 )
Cuánto tiempo esperar para cerrar la bandeja después de hablar (MS)
src/spokestacktray.tsx: 134
• Depuración Optional : boolean
Mostrar mensajes de depuración de react-native spokestack
src/spokestacktray.tsx: 136
• Duración Optional : number (predeterminado: 500 )
Duración para la animación de la bandeja (MS)
src/spokestacktray.tsx: 138
• Faltación Optional : EasingFunction (predeterminado: Easing.Bezier (0.77, 0.41, 0.2, 0.84)) ))
Función de alivio de la animación de la bandeja
src/spokestacktray.tsx: 140
• Exitnodes Optional : string []
Todos los nodos en esta matriz deben terminar la conversación y cerrar la bandeja
src/spokestacktray.tsx: 150
• Fontfamilia Optional : string
FUENTA para usar para "escuchar ...", "Cargando ..." y chat de texto de burbujas.
src/spokestacktray.tsx: 155
• Gradientcolors Optional : string [] (predeterminado: ["#61fae9", "#2f5bea"] )
Los colores para el gradiente lineal que se muestra al escuchar puede ser cualquier cantidad de colores (recomendado: 2-3)
src/spokestacktray.tsx: 160
• Saludo Optional : boolean (predeterminado: falso )
Si saludar al usuario con un mensaje de bienvenida cuando se abre la bandeja. Nota: handleIntent debe responder a la intención de "saludar".
src/spokestacktray.tsx: 166
• Háptico Optional : boolean (predeterminado: verdadero )
Establezca esto en falso para deshabilitar el háptico que se reproduce cada vez que la bandeja comienza a escuchar.
src/spokestacktray.tsx: 171
• Palabra clave Optional : KeywordConfig
Configuración para el reconocimiento de palabras clave
Los campos de filtro, detectar, codificar y metadatos aceptan 2 tipos de valores.
require o import (EG model: require('./nlu.tflite') )Consulte https://www.spokestack.io/docs/concepts/keywords para obtener más información sobre el reconocimiento de palabras clave.
example
// ...
keyword = { {
detect : 'https://s.spokestack.io/u/UbMeX/detect.tflite' ,
encode : 'https://s.spokestack.io/u/UbMeX/encode.tflite' ,
filter : 'https://s.spokestack.io/u/UbMeX/filter.tflite' ,
metadata : 'https://s.spokestack.io/u/UbMeX/metadata.json'
} }También puede descargar modelos con anticipación e incluirlos de archivos locales. Nota: Esto requiere un cambio en su metro.config.js. Para obtener más información, consulte "incluyendo archivos de modelo en su paquete de aplicaciones" en el readme.md.
// ...
keyword = { {
detect : require ( './detect.tflite' ) ,
encode : require ( './encode.tflite' ) ,
filter : require ( './filter.tflite' ) ,
// IMPORTANT: a special extension is used for local metadata JSON files (`.sjson`) when using `require` or `import`
// so the file is not parsed when included but instead imported as a source object. This makes it so the
// file is read and parsed by the underlying native libraries instead.
metadata : require ( './metadata.sjson' )
} }La configuración de palabras clave también acepta un campo de clases para cuando no se especifican los metadatos.
// ...
keyword = { {
detect : require ( './detect.tflite' ) ,
encode : require ( './encode.tflite' ) ,
filter : require ( './filter.tflite' ) ,
classes : [ 'one' , 'two' , 'three]
} } src/spokestacktray.tsx: 221
• Minheight Optional : number (predeterminado: 170 )
Altura mínima para la bandeja
src/spokestacktray.tsx: 223
• NLU : NLUConfig
El modelo NLU TensorFlow Lite (.Tflite), JSON Metadata y NLU Vocabulary (.txt)
Los 3 campos aceptan 2 tipos de valores.
require o import (EG model: require('./nlu.tflite') ))Vea https://spokestack.io/docs/concepts/nlu para obtener más información sobre NLU.
// ...
nlu = { {
model : 'https://somecdn.com/nlu.tflite' ,
vocab : 'https://somecdn.com/vocab.txt' ,
metadata : 'https://somecdn.com/metadata.json'
} }También puede pasar archivos locales. Nota: Esto requiere un cambio en su metro.config.js. Para obtener más información, consulte "incluyendo archivos de modelo en su paquete de aplicaciones" en el readme.md.
// ...
nlu = { {
model : require ( './nlu.tflite' ) ,
vocab : require ( './vocab.txt' ) ,
// IMPORTANT: a special extension is used for local metadata JSON files (`.sjson`) when using `require` or `import`
// so the file is not parsed when included but instead imported as a source object. This makes it so the
// file is read and parsed by the underlying native libraries instead.
metadata : require ( './metadata.sjson' )
} } src/spokestacktray.tsx: 130
• Orientación Optional : "left" | "right" (predeterminado: "izquierda" )
El botón de la bandeja se puede orientar a cada lado de la pantalla
src/spokestacktray.tsx: 235
• Primario Optional : string (predeterminado: "#2f5bea" )
Este color se usa para asumir la bandeja y se usa en el botón de micrófono y las burbujas de voz.
src/spokestacktray.tsx: 240
• Perfil Optional : PipelineProfile
El perfil de configuración de Spokestack pasará a React-Native Spokestack. Estos están disponibles en React-Native Spokestack que comienzan en la versión 4.0.0.
Si se especifican los archivos de configuración de Wakeword, el valor predeterminado será TFLITE_WAKEWORD_NATIVE_ASR . De lo contrario, el valor predeterminado es PTT_NATIVE_ASR .
import SpokestackTray from 'react-native-spokestack-tray'
import { PipelineProfile } from 'react-native-spokestack'
// ...
< SpokestackTray
profile = { PipelineProfile . TFLITE_WAKEWORD_SPOKESTACK_ASR }
// ... src/spokestacktray.tsx: 261
• Refreshmodeles Optional : boolean
Use esto con moderación para actualizar la palabra de wetak, la palabra clave y los modelos NLU en el dispositivo (fuerza sobrescribir). <SpokestackTray refreshModels={process.env.NODE_ENV !== 'production'} ... />
src/spokestacktray.tsx: 268
• Saygreeting Optional : boolean (predeterminado: verdadero )
Si hablar el saludo o solo mostrar una burbuja de chat con el mensaje de Salud, incluso si el sonido está encendido.
src/spokestacktray.tsx: 274
• Optional SoundOffimage : ReactNode (predeterminado: (<imagen fuente = {SoundOffImage} style = {{width: 30, altura: 30}} />) )
Reemplace el sonido de la imagen pasando un componente de imagen React
src/spokestacktray.tsx: 278
• Optional SoundOnImage : ReactNode (predeterminado: (<imagen fuente = {SoundOnImage} style = {{width: 30, altura: 30}} />) )
Reemplace el sonido en la imagen pasando un componente de imagen React
src/spokestacktray.tsx: 276
• Optional SpokestackConfig : Partial SpokestackConfig
Pase las opciones directamente a la función SpokStack.initialize () desde React-Native Spokestack. Consulte https://github.com/spokestack/react-native-pokestack para opciones disponibles.
src/spokestacktray.tsx: 285
• Startheight Optional : number (predeterminado: 220 )
Altura inicial para bandeja
src/spokestacktray.tsx: 287
• Estilo Optional : false | RegisteredStyle ViewStyle | Value | AnimatedInterpolation | WithAnimatedObject ViewStyle | WithAnimatedArray < false | ViewStyle | RegisteredStyle ViewStyle | RecursiveArray < false | ViewStyle | RegisteredStyle ViewStyle > | Readonly ( false | ViewStyle | RegisteredStyle ViewStyle ) []>
Este accesorio de estilo se pasa al contenedor de la bandeja
src/spokestacktray.tsx: 289
• TTSFORMAT Optional : TTSFormat (predeterminado: ttsformat.text )
El formato para el texto pasado a Spokestack.synthesize
src/spokestacktray.tsx: 291
• Voz Optional : string (predeterminada: "Demo-masal" )
Una clave para una voz en Spokestack TTS, pasó a Spokestack.synthesize. Esto solo se puede cambiar si ha creado una voz personalizada utilizando una cuenta de fabricante de Spokestack. Ver https://spokestack.io/picing#maker. Si no se especifica, se usa la voz gratuita de "macho de demostración" de Spokestack.
src/spokestacktray.tsx: 298
• Palabra de vigilia Optional : WakewordConfig
Los modelos NLU TensorFlow Lite (.Tflite) para la palabra de wakebra.
Los 3 campos aceptan 2 tipos de valores.
require o import (EG model: require('./nlu.tflite') )Ver https://spokestack.io/docs/concepts/wakeword-models para obtener más información sobre Wakeoword
Spokestack ofrece archivos de modelo de palabras de wetak de muestra ("Spokestack"):
// ...
wakeword = { {
detect : 'https://s.spokestack.io/u/hgmYb/detect.tflite' ,
encode : 'https://s.spokestack.io/u/hgmYb/encode.tflite' ,
filter : 'https://s.spokestack.io/u/hgmYb/filter.tflite'
} }También puede descargar estos modelos con anticipación e incluirlos de archivos locales. Nota: Esto requiere un cambio en su metro.config.js. Para obtener más información, consulte "incluyendo archivos de modelo en su paquete de aplicaciones" en el readme.md.
// ...
wakeword = { {
detect : require ( './detect.tflite' ) ,
encode : require ( './encode.tflite' ) ,
filter : require ( './filter.tflite' )
} } src/spokestacktray.tsx: 332
▸ Optional EditTranscript ( transcript ): string
Edite la transcripción antes de la clasificación y antes de que se muestre la burbuja de respuesta del usuario.
| Nombre | Tipo |
|---|---|
transcript | string |
string
src/spokestacktray.tsx: 145
▸ HandleIntent ( intent , slots? utterance? ): [IntentResult](#IntentResult)
Esta función toma una intención de la NLU y devuelve un objeto con un nombre de nodo de conversación único (que define) y un mensaje para ser procesado por TTS y hablado.
Nota: El mensaje solo se muestra en una burbuja de chat si el sonido se ha apagado.
| Nombre | Tipo |
|---|---|
intent | string |
slots? | SpokestackNLUSlots |
utterance? | string |
[IntentResult](#IntentResult)
src/spokestacktray.tsx: 91
▸ Optional OnClose (): void
Llamado cada vez que la bandeja ha cerrado
void
src/spokestacktray.tsx: 227
▸ Optional Onerror ( e ): void
Llamado cada vez que hay un error de Spokestack
| Nombre | Tipo |
|---|---|
e | SpokestackErrorEvent |
void
src/spokestacktray.tsx: 229
▸ Optional onopen (): void
Llamado cada vez que se ha abierto la bandeja
void
src/spokestacktray.tsx: 231
• Datos Optional : any
Cualquier otro dato que desee agregar
src/spokestacktray.tsx: 64
• Optional Nointerrupts : boolean
Establezca en true para detener el reconocimiento de la palabra de wake durante la reproducción del aviso.
src/spokestacktray.tsx: 62
• Nodo : string
Una clave definida por el usuario para indicar dónde está el usuario en la conversación incluye esto en el accesorio exitNodes si Spokestack no debe volver a escuchar después de decir el aviso.
src/spokestacktray.tsx: 55
• Aviso : string
Se procesará en el habla a menos que la bandeja esté en modo silencioso
src/spokestacktray.tsx: 57
<SpokestackTray />Estos métodos están disponibles en el componente SpokestackTray. Use una react react para acceder a estos métodos.
const spokestackTray = useRef ( null )
// ...
< SpokestackTray ref = { spokestackTray }
// ...
spokestackTray . current . say ( 'Here is something for Spokestack to say' ) Nota : En la mayoría de los casos, debe llamar listen en lugar de open .
▸ Open (): void
Abra la bandeja, salude (si corresponde) y escuche
void
src/spokestacktray.tsx: 743
▸ Cerrar (): void
Cierre la bandeja, deja de escuchar y reinicie la Palabra de Wake
void
src/spokestacktray.tsx: 754
▸ Diga ( input ): Promise void
Pasa la entrada a Spokestack.synthesize (), reproduce el audio y agrega una burbuja del habla.
| Nombre | Tipo |
|---|---|
input | string |
Promise void
SRC/Spokestacktray.tsx: 766
▸ addbubble ( bubble ): void
Agregue una burbuja (sistema o usuario) a la interfaz de chat
| Nombre | Tipo |
|---|---|
bubble | Bubble |
void
src/spokestacktray.tsx: 799
• Isleft : boolean
src/componentes/spiceBubbles.tsx: 9
• Texto : string
src/componentes/spiceBubbles.tsx: 8
▸ ToggleSilent (): Promise boolean
Alternar el modo silencioso
Promise boolean
src/spokestacktray.tsx: 816
▸ issilent (): boolean
Devuelve si la bandeja está en modo silencioso
boolean
src/spokestacktray.tsx: 828
Estas funciones están disponibles como exportaciones de React-Native-Spokestack-S-Tank
▸ Listen (): Promise void
Le dice a la tubería de discursos de Spokestack que comience a escuchar. También solicita permiso para escuchar si es necesario. Intentará iniciar la tubería antes de activar si aún no se inicia. Esta función no hará nada si la aplicación está en segundo plano.
import { listen } from 'react-native-spokestack-tray'
try {
await listen()
} catch (error) {
console.error(error)
}
Promise void
src/spokestack.ts: 21
▸ StopListening (): Promise void
Promise void
src/spokestack.ts: 30
▸ Const islistening (): Promise boolean
Devuelve si Spokestack está escuchando actualmente
console . log ( `isListening: ${ await isListening ( ) } ` ) Promise boolean
src/index.ts: 19
▸ Const isinitialized (): Promise boolean
Devuelve si Spokestack se ha inicializado
console . log ( `isInitialized: ${ await isInitialized ( ) } ` ) Promise boolean
src/index.ts: 27
Promise Const es boolean
Devuelve si se ha iniciado la tubería del habla
console . log ( `isStarted: ${ await isStarted ( ) } ` ) Promise boolean
src/index.ts: 35
▸ Const addEventListener ( eventType , listener , context? ): EmitterSubscription
Atar a cualquier evento emitido por las bibliotecas nativas Los eventos son: "Reconocer", "Parcial_recognize", "Error", "Activar", "Desactivar" y "Tiempo de espera". Vea la parte inferior del ReadMe.md para las descripciones de los eventos.
useEffect ( ( ) => {
const listener = addEventListener ( 'recognize' , onRecognize )
// Unsubscribe by calling remove when components are unmounted
return ( ) => {
listener . remove ( )
}
} , [ ] ) | Nombre | Tipo |
|---|---|
eventType | string |
listener | ( event : any ) => void |
context? | Object |
EmitterSubscription
src/index.ts: 51
▸ Const RemoLEventListener ( eventType , listener ): void
Eliminar un oyente de eventos
removeEventListener ( 'recognize' , onRecognize ) | Nombre | Tipo |
|---|---|
eventType | string |
listener | (... args : any []) => any |
void
src/index.ts: 59
▸ Const removealllisteners (): void
Eliminar a los oyentes existentes
componentWillUnmount ( ) {
removeAllListeners ( )
} void
src/index.ts: 69
Use addEventListener() , removeEventListener() y removeAllListeners() para agregar y eliminar los controladores de eventos. Todos los eventos están disponibles tanto en iOS como en Android.
| Nombre | Datos | Descripción |
|---|---|---|
| reconocer | { transcript: string } | Despedido cada vez que el reconocimiento de voz se completa con éxito. |
| parcial_recognizar | { transcript: string } | Disparó cada vez que la transcripción cambia durante el reconocimiento de voz. |
| comenzar | null | Disparado cuando comienza la tubería del habla (que comienza a escuchar la palabra de vigilia o comienza VAD). |
| detener | null | Disparado cuando la tubería del habla se detiene. |
| activar | null | Disparado cuando la tubería del habla se activa, ya sea a través del VAD, la palabra de wake o al llamar .activate() . |
| desactivar | null | Disparado cuando la tubería del habla desactiva. |
| jugar | { playing: boolean } | Disparado cuando la reproducción de TTS comienza y se detiene. Ver la función speak() . |
| se acabó el tiempo | null | Disparado cuando se salga de una tubería activa debido a la falta de reconocimiento. |
| rastro | { message: string } | Disparado para obtener mensajes de rastreo. La verbosidad está determinada por la opción traceLevel . |
| error | { error: string } | Disparado cuando hay un error en Spokestack. |
Cuando se activa un evento de error, se rechazan cualquier promesa existente.
Spokestack utiliza estas funciones de utilidad para verificar el permiso de micrófono en iOS y Android y permiso de reconocimiento de voz en iOS.
▸ CHECKSPEECH (): Promise boolean
Esta función se puede usar para verificar si el usuario ha dado el permiso necesario para el habla. En iOS, esto incluye recnogición de micrófono y habla. En Android, solo se necesita el micrófono.
import { checkSpeech } from 'react-native-spokestack-tray'
// ...
const hasPermission = await checkSpeech ( ) Promise boolean
SRC/Utils/permisos.ts: 78
▸ requestSeSpech (): Promise boolean
Esta función se puede utilizar para solicitar realmente el permiso necesario para el habla. En iOS, esto incluye recnogición de micrófono y habla. En Android, solo se necesita el micrófono.
Nota: Si el usuario ha disminuido en el pasado en iOS, el usuario debe enviarse a la configuración.
import { requestSpeech } from 'react-native-spokestack-tray'
// ...
const hasPermission = await requestSpeech ( ) Promise boolean
SRC/Utils/permisos.ts: 106
MIT