
React Native Plugin para agregar voz usando Spokestack. Esto incluye el reconocimiento de voz, la palabra de vigilia y la comprensión del lenguaje natural, así como la sintetización del texto al habla utilizando voces de Spokestack.
Usando NPM:
npm install --save react-native-spokestacko usar hilo:
yarn add react-native-spokestackLuego siga las instrucciones de cada plataforma para vincular la subestima react-nativa a su proyecto:
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.
React-Native-Spokestack utiliza API relativamente nuevas que solo están disponibles en iOS 13+. Establezca el objetivo de implementación en iOS 13 en la parte superior de su Podfile:
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 ahora, 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 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.
< 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 {
// Set the minimum SDK to 24.
// React Native 0.64+ sets version 21.
// If you prefer to leave the minimum SDK at 21,
// another option is to set this to 21, but
// also set android.enableDexingArtifactTransform=false
// in your top-level gradle.properties.
// See https://github.com/google/ExoPlayer/issues/6801#issuecomment-574089568
minSdkVersion = 24
// ...
dependencies {
// Minimium gradle is 3.0.1+
// The latest React Native already has this
classpath( " com.android.tools.build:gradle:4.2.1 " ) 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 " /> El permiso Record_Audio es especial en el sentido de que debe estar en la lista en AndroidManifest.xml y solicitado en tiempo de ejecución. Hay un par de maneras de manejar esto (react-nativa-spokestack no hace esto por usted):
Si bien iOS presentará diálogos de permisos automáticamente para cualquier permiso necesario, debe hacerlo manualmente en Android.
React Native ya proporciona un módulo para esto. Vea los permisos de React Native Android para obtener más información.
Comience a usar Spokestack o consulte nuestros tutoriales en profundidad sobre ASR, NLU y TTS. También asegúrese de echar un vistazo al libro de cocina para obtener soluciones rápidas a problemas comunes.
Una aplicación de ejemplo de trabajo se incluye en este repositorio en el example/ carpeta.
import Spokestack from 'react-native-spokestack'
import { View , Button , Text } from 'react-native'
function App ( ) {
const [ listening , setListening ] = useState ( false )
const onActivate = ( ) => setListening ( true )
const onDeactivate = ( ) => setListening ( false )
const onRecognize = ( { transcript } ) => console . log ( transcript )
useEffect ( ( ) => {
Spokestack . addEventListener ( 'activate' , onActivate )
Spokestack . addEventListener ( 'deactivate' , onDeactivate )
Spokestack . addEventListener ( 'recognize' , onRecognize )
Spokestack . initialize (
process . env . SPOKESTACK_CLIENT_ID ,
process . env . SPOKESTACK_CLIENT_SECRET
)
// This example starts the Spokestack pipeline immediately,
// but it could be delayed until after onboarding or other
// conditions have been met.
. then ( Spokestack . start )
return ( ) => {
Spokestack . removeAllListeners ( )
}
} , [ ] )
return (
< View >
< Button onClick = { ( ) => Spokestack . activate ( ) } title = "Listen" />
< Text > { listening ? 'Listening...' : 'Idle' } </ Text >
</ View >
)
} 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 : {
assetExts : defaults . assetExts . concat ( [ 'tflite' , 'txt' , 'sjson' ] )
}
}Luego incluya archivos de modelo utilizando objetos de origen:
Spokestack . initialize ( clientId , clientSecret , {
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.
▸ Inicializar ( clientId , clientSecret , config? ): Promise void
Inicializar la tubería del habla; requerido para todos los demás métodos.
Los primeros 2 args son las credenciales de su bosque disponibles de forma gratuita de https://spokestack.io. Evite codificarlos en su aplicación. Hay varias formas de incluir variables de entorno en su código.
Uso de process.env: https://babeljs.io/docs/en/babel-plugin-transform-inline-environment-variables/
Uso de un archivo .env local ignorado por git: https://github.com/goatandsheep/react-native-dotenv https://github.com/luggit/react-native-config
Consulte SpokestackConfig para todas las opciones disponibles.
example
import Spokestack from 'react-native-spokestack'
// ...
await Spokestack . initialize ( process . env . CLIENT_ID , process . env . CLIENT_SECRET , {
pipeline : {
profile : Spokestack . PipelineProfile . PTT_NATIVE_ASR
}
} ) | Nombre | Tipo |
|---|---|
clientId | string |
clientSecret | string |
config? | [SpokestackConfig](#SpokestackConfig) |
Promise void
index.ts: 64
▸ Destroy (): Promise void
Destruye la tubería del habla, elimina a todos los oyentes y libera todos los recursos. Esto se puede llamar antes de reinicializar la tubería. Un buen lugar para llamar a esto es en componentWillUnmount .
example
componentWillUnmount ( ) {
Spokestack . destroy ( )
} Promise void
index.ts: 81
▸ Inicio (): Promise void
Comience la tubería del habla. La tubería del habla comienza en el estado deactivate .
example
import Spokestack from 'react-native-spokestack`
// ...
Spokestack . initialize ( process . env . CLIENT_ID , process . env . CLIENT_SECRET )
. then ( Spokestack . start ) Promise void
index.ts: 96
▸ Stop (): Promise void
Detente la tubería del habla. Esto efectivamente se detiene ASR, VAD y Wake Word.
example
import Spokestack from 'react-native-spokestack`
// ...
await Spokestack . stop ( ) Promise void
index.ts: 110
▸ activar (): Promise void
Active manualmente la tubería del habla. Esto es necesario cuando se usa un perfil PTT. Los perfiles VAD también pueden activar ASR sin la necesidad de llamar a este método.
example
import Spokestack from 'react-native-spokestack`
// ...
< Button title = "Listen" onClick = { ( ) => Spokestack . activate ( ) } /> Promise void
index.ts: 126
▸ DeActivate (): Promise void
Desactivar la tubería del habla. Si el perfil incluye la palabra de vigilia, la tubería volverá a escuchar la palabra de vigilia. Si VAD está activo, la tubería puede reactivarse sin llamar a activado ().
example
import Spokestack from 'react-native-spokestack`
// ...
< Button title = "Stop listening" onClick = { ( ) => Spokestack . deactivate ( ) } /> Promise void
index.ts: 142
▸ Synthesize ( input , format? voice? ): Promise string
Sintetizar algún texto en el discurso Devuelve Promise<string> con la cadena como URL para un MPEG jugable.
Actualmente solo hay una voz gratuita disponible ("Demo-masal"). La voz se puede cambiar si ha creado una voz personalizada utilizando una cuenta de Spokestack Maker. Ver https://spokestack.io/picing#maker.
example
const url = await Spokestack . synthesize ( 'Hello world' )
play ( url ) | Nombre | Tipo |
|---|---|
input | string |
format? | [TTSFormat](#TTSFormat) |
voice? | string |
Promise string
index.ts: 158
▸ hablar ( input , format? voice? ): Promise void
Sintetizar algún texto en el habla y luego reproducir inmediatamente el audio a través del sistema de audio predeterminado. El manejo de la sesión de audio puede ser muy complejo y recomendamos usar una biblioteca RN centrada en el audio para cualquier cosa más que una reproducción muy simple.
Actualmente solo hay una voz gratuita disponible ("Demo-masal").
example
await Spokestack . speak ( 'Hello world' ) | Nombre | Tipo |
|---|---|
input | string |
format? | [TTSFormat](#TTSFormat) |
voice? | string |
Promise void
index.ts: 174
▸ Clasificar ( utterance ): Promise SpokestackNLUResult
Clasifique el enunciado utilizando el modelo de comprensión del lenguaje natural de intención/ranura pasada a spokestack.initialize (). Consulte https://www.spokestack.io/docs/concepts/nlu para obtener más información.
example
const result = await Spokestack . classify ( 'hello' )
// Here's what the result might look like,
// depending on the NLU model
console . log ( result . intent ) // launch | Nombre | Tipo |
|---|---|
utterance | string |
Promise SpokestackNLUResult
index.ts: 190
▸ Isinitialized (): Promise boolean
Devuelve si Spokestack se ha inicializado
example
console . log ( `isInitialized: ${ await Spokestack . isInitialized ( ) } ` ) Promise boolean
index.ts: 199
▸ ISstarted (): Promise boolean
Devuelve si se ha iniciado la tubería del habla
example
console . log ( `isStarted: ${ await Spokestack . isStarted ( ) } ` ) Promise boolean
index.ts: 208
▸ IsActivated (): Promise boolean
Devuelve si la tubería del habla está actualmente activada
example
console . log ( `isActivated: ${ await Spokestack . isActivated ( ) } ` ) Promise boolean
index.ts: 217
• Confianza : number
Un número de 0 a 1 representa la confianza del modelo NLU en la intención que reconoció, donde 1 representa la confianza absoluta.
tipos.ts: 115
• Intención : string
La intención basada en la coincidencia proporcionada por el modelo NLU
tipos.ts: 113
• Slots : SpokestackNLUSlots
Datos asociados con la intención, proporcionada por el modelo NLU
tipos.ts: 117
▪ [Key: string ]: SpokestackNLUSlot
• RawValue : string
El valor de cadena original de la ranura reconocido en la expresión del usuario
tipos.ts: 104
• Tipo : string
El tipo de ranura, como se define en los metadatos del modelo
tipos.ts: 100
• Valor : any
El valor analizado (escrito) de la ranura reconocido en la expresión del usuario
tipos.ts: 102
▸ AddEventListener ( eventType , listener , context? ): EmitterSubscription
Atar a cualquier evento emitido por las bibliotecas nativas Consulte Eventos para una lista de todos los eventos disponibles.
example
useEffect ( ( ) => {
const listener = Spokestack . addEventListener ( 'recognize' , onRecognize )
// Unsubsribe by calling remove when components are unmounted
return ( ) => {
listener . remove ( )
}
} , [ ] ) | Nombre | Tipo | Descripción |
|---|---|---|
eventType | string | Nombre del evento para el que estamos registrando el oyente |
listener | ( event : any ) => void | la función del oyente |
context? | Object | contexto del oyente |
EmitterSubscription
index.ts: 237
▸ RemoVentListener ( eventType , listener ): void
Eliminar un oyente de eventos
example
Spokestack . removeEventListener ( 'recognize' , onRecognize ) | Nombre | Tipo | Descripción |
|---|---|---|
eventType | string | Nombre del evento para emitir |
listener | (... args : any []) => any | Función para invocar cuando se emite el evento especificado |
void
index.ts: 253
▸ RemoveAlllisteners (): void
Eliminar a los oyentes existentes
example
Spokestack . removeAllListeners ( ) void
index.ts: 265
Se admiten tres formatos cuando se usa TTS Spokestack. Texto en bruto, SSML y Markdown de habla. Consulte https://www.speechmarkdown.org/ si no está familiarizado con el markdown del habla. Se espera IPA cuando se usa SSML o Martido de discurso.
• Speechmarkdown = 2
tipos.ts: 73
• SSML = 1
tipos.ts: 72
• texto = 0
tipos.ts: 71
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.
Estas son las opciones de configuración que se pueden pasar a Spokestack.initialize(_, _, spokestackConfig) . No se requieren opciones en SpokestackConfig.
SpokestackConfig tiene la siguiente estructura:
interface SpokestackConfig {
/**
* This option is only used when remote URLs are passed to fields such as `wakeword.filter`.
*
* Set this to true to allow downloading models over cellular.
* Note that `Spokestack.initialize()` will still reject the promise if
* models need to be downloaded but there is no network at all.
*
* Ideally, the app will include network handling itself and
* inform the user about file downloads.
*
* Default: false
*/
allowCellularDownloads ?: boolean
/**
* Wakeword, Keyword, and NLU model files are cached internally.
* Set this to true whenever a model is changed
* during development to refresh the internal model cache.
*
* This affects models passed with `require()` as well
* as models downloaded from remote URLs.
*
* Default: true in dev mode, false otherwise
*
* **Important:** By default, apps in production will
* cache models to avoid downloading them every time
* the app is launched. The side-effect of this optimization
* is that if models change on the CDN, apps will
* not pick up those changes–unless the app were reinstalled.
* We think this is a fair trade-off, but set this to `true`
* if you prefer to download the models every time the app
* is launched.
*/
refreshModels ?: boolean
/**
* This controls the log level for the underlying native
* iOS and Android libraries.
* Also add a `"trace"` event listener to get trace events.
* See the TraceLevel enum for values.
*/
traceLevel ?: TraceLevel
/**
* Most of these options are advanced aside from "profile"
*/
pipeline ?: PipelineConfig
/** Only needed if using Spokestack.classify */
nlu ?: NLUConfig
/**
* Only required for wakeword
* Most options are advanced aside from
* filter, encode, and decode for specifying config files.
*/
wakeword ?: WakewordConfig
/**
* Only required for the keyword recognizer
* Most options are advanced aside from
* filter, encode, decode, metadata, and classes.
*/
keyword ?: KeywordConfig
} La cantidad de registro para mostrar un número más bajo significa más registros.
• Debug = 10
tipos.ts: 58
• Información = 30
tipos.ts: 60
• Ninguno = 100
tipos.ts: 61
• Perf = 20
tipos.ts: 59
Los perfiles de la tubería configuran la tubería del habla en función de sus necesidades
• ptt_native_asr = 2
El reconocimiento automático de voz de Apple/Android está activado cuando la tubería del habla está activa. Es probable que este sea el perfil más común cuando no se usa la palabra de wake.
tipos.ts: 24
• PTT_SPOKESTACK_ASR = 5
Spokestack El reconocimiento automático de voz está activado cuando la tubería del habla está activa. Es probable que este sea el perfil más común cuando no se usa la palabra de wake, pero se prefiere Spokestack ASR.
tipos.ts: 42
• tflite_wakeword_keyword = 6
La palabra de wake tflite sensible a VAD activa Tflite Keyword Reconicador
tipos.ts: 46
• tflite_wakeword_native_asr = 0
Configure la palabra de wake y use Apple/Android ASR local. Tenga en cuenta que se requiere Wakeword.filter, wakword.encode y wakeword.detect si se utiliza algún perfil de Wake Word.
tipos.ts: 12
• tflite_wakeword_spokestack_asr = 3
Configure la palabra de wake y use el bosque remoto ASR. Tenga en cuenta que se requiere Wakeword.filter, wakword.encode y wakeword.detect si se utiliza algún perfil de Wake Word.
tipos.ts: 30
• vad_keyword_asr = 7
Reconocido de palabras clave TFLITE activada por VAD
tipos.ts: 50
• vad_native_asr = 1
El reconocimiento automático de voz de Apple/Android está activado cuando la detección de voz activa lo desencadena.
tipos.ts: 17
• vad_spokestack_asr = 4
El reconocimiento automático de voz de Spokestack está activado cuando la detección de voz activa lo desencadena.
tipos.ts: 35
• AGCCOMPRESIÓN Optional : number
advanced
Solo Android para acústicoGainControl
El nivel de audio máximo de destino, en -DB, para mantener un pico de -9dB, configure un valor de 9
tipos.ts: 192
• AGCTARGETLEVELDBFS Optional : number
advanced
Solo Android para acústicoGainControl
Tasa de compresión de rango dinámico, en DBFS
tipos.ts: 200
• Anspolicy Optional : "aggressive" | "very-aggressive" | "mild" | "medium"
advanced
Solo Android para acústicoisupresor
Política de ruido
tipos.ts: 183
• Optional BufferWidth : number
advanced
Ancho del búfer, utilizado con ancho de cuadro para determinar el tamaño del búfer
tipos.ts: 155
• ancho de marco Optional : number
advanced
Ancho del marco del habla, en MS
tipos.ts: 149
• Perfil Optional : PipelineProfile
Los perfiles son colecciones de configuraciones comunes para etapas de tuberías.
Si ningún perfil se establece explícitamente, Spokestack determina un perfil predeterminado sensato basado en la configuración pasada a Spokestack.initialize() ::
Si los archivos de configuración de Wakeword están configurados (y la configuración de palabras clave no lo es), el valor predeterminado se establecerá en TFLITE_WAKEWORD_NATIVE_ASR .
Si los archivos de configuración de palabras clave están establecidas (y la configuración de Wakeword no lo es), el valor predeterminado se establecerá en VAD_KEYWORD_ASR .
Si se establecen archivos de configuración de palabras clave y de palabras clave, el valor predeterminado se establecerá en TFLITE_WAKEWORD_KEYWORD .
De lo contrario, el valor predeterminado es PTT_NATIVE_ASR .
tipos.ts: 139
• Muestra Optional : number
Tasa de muestreo de audio, en HZ
tipos.ts: 143
• Vadfalldelay Optional : number
advanced
Longitud de la ejecución de detección de borde caída, en MS; Este valor determina cuántas muestras negativas se deben recibir para voltear el detector a negativo
tipos.ts: 166
• VadMode Optional : "quality" | "low-bitrate" | "aggressive" | "very-aggressive"
Modo detector de actividad de voz
tipos.ts: 159
• VadrisedLay Optional : number
advanced
Solo de Android
Longitud de ejecución de detección de borde ascendente, en MS; Este valor determina cuántas muestras positivas se deben recibir para voltear el detector a positivo
tipos.ts: 175
• Metadatos : string | number
El archivo JSON para metadatos de NLU. Si se especifica, el modelo y el vocabulario también se requieren.
Este campo acepta 2 tipos de valores.
require o import (por ejemplo metadata: require('./metadata.sjson') ). IMPORTANTE: Se usa una extensión especial para los archivos JSON de metadatos locales ( .sjson ) cuando se require o import para que el archivo no se analice cuando se incluye, sino que se importa como un objeto fuente. Esto lo hace para que el archivo sea leído y analizado por las bibliotecas nativas subyacentes.
tipos.ts: 223
• Modelo : string | number
El modelo NLU TensorFlow-Lite. Si se especifica, también se requieren metadatos y vocabulario.
Este campo acepta 2 tipos de valores.
require o import (EG model: require('./nlu.tflite') ) tipos.ts: 211
• Vocab : string | number
Un archivo txt que contiene el vocabulario NLU. Si se especifica, también se requieren modelo y metadatos.
Este campo acepta 2 tipos de valores.
require o import (por ejemplo vocab: require('./vocab.txt') )) tipos.ts: 231
• Longitud de entrada Optional : number
tipos.ts: 244
• Detectar : string | number
El modelo "Detect" TensorFlow-Lite. Si se especifica, también se requieren filtro y codificación.
Este campo acepta 2 tipos de valores.
require o import (por ejemplo, detect: require('./detect.tflite') )El modelo de codificación se utiliza para realizar cada paso autorregresivo sobre los marcos MEL; Sus entradas deben estar en forma [MEL-Length, MEL-Width], y sus salidas [ENCENDIDO ENCODE], con una entrada/salida de estado adicional en forma [ancho de estado]
tipos.ts: 272
• Codificar : string | number
El modelo "Codificar" TensorFlow-Lite. Si se especifica, también se requieren filtro y detección.
Este campo acepta 2 tipos de valores.
require o import (por ejemplo encode: require('./encode.tflite') )Sus entradas deben formarse [codificar, longitud, ancho de codificación] y sus salidas
tipos.ts: 283
• Filtro : string | number
El modelo "Filtrar" TensorFlow-Lite. Si se especifica, también se requieren detectar y codificar.
Este campo acepta 2 tipos de valores.
require o import (por ejemplo, filter: require('./filter.tflite') )El modelo de filtro se utiliza para calcular un marco de espectrograma MEL a partir del STFT lineal; Sus entradas deben estar en forma [FFT-Width], y sus salidas [Mel-Width]
tipos.ts: 260
• Activemax Optional : number
advanced
La longitud máxima de una activación, en milisegundos, se usa para horarios para la activación
tipos.ts: 373
• Activemina Optional : number
advanced
La longitud mínima de una activación, en milisegundos, utilizada para ignorar una desactivación de vad después de la palabra de vigilia
tipos.ts: 366
• El tiempo de solicitud Optional : number
solo iOS
Duración de tiempo para permitir que se ejecute una solicitud de Apple ASR, en milisegundos. Apple tiene un límite indocumentado de 60000 ms por solicitud.
tipos.ts: 380
• RMSALPHA Optional : number
Solo Android advanced
La tasa de actualización de promedio móvil ponderado exponencialmente (EWMA) para la energía de señal RMS actual (0 para no normalización RMS)
tipos.ts: 397
• RMStarget Optional : number
Solo Android advanced
La energía de señal cuadrada (RMS) de raíz lineal deseada, que se utiliza para la normalización de la señal y debe ajustarse al objetivo RMS utilizado durante el entrenamiento
tipos.ts: 389
• Palabras de vigilia Optional : string | string []
solo iOS
Una matriz ordenada o una lista separada por comasas de palabras clave de la palabra de wake solo necesarias cuando no pasan el filtro, detectan y codifica rutas.
tipos.ts: 404
• Detectar : string | number
El modelo "Detect" TensorFlow-Lite. Si se especifica, también se requieren filtro y codificación.
Este campo acepta 2 tipos de valores.
require o import (por ejemplo, detect: require('./detect.tflite') )El modelo de codificación se utiliza para realizar cada paso autorregresivo sobre los marcos MEL; Sus entradas deben estar en forma [MEL-Length, MEL-Width], y sus salidas [ENCENDIDO ENCODE], con una entrada/salida de estado adicional en forma [ancho de estado]
tipos.ts: 272
• Codificar : string | number
El modelo "Codificar" TensorFlow-Lite. Si se especifica, también se requieren filtro y detección.
Este campo acepta 2 tipos de valores.
require o import (por ejemplo encode: require('./encode.tflite') )Sus entradas deben formarse [codificar, longitud, ancho de codificación] y sus salidas
tipos.ts: 283
• Filtro : string | number
El modelo "Filtrar" TensorFlow-Lite. Si se especifica, también se requieren detectar y codificar.
Este campo acepta 2 tipos de valores.
require o import (por ejemplo, filter: require('./filter.tflite') )El modelo de filtro se utiliza para calcular un marco de espectrograma MEL a partir del STFT lineal; Sus entradas deben estar en forma [FFT-Width], y sus salidas [Mel-Width]
tipos.ts: 260
Se requieren metadata o classes , y son mutuamente excluyentes.
• Metadatos : string | number
El archivo JSON para metadatos de palabras clave. Requerido si no se especifica keyword.classes .
Este campo acepta 2 tipos de valores.
require o import (por ejemplo metadata: require('./metadata.sjson') ). IMPORTANTE: Se usa una extensión especial para los archivos JSON de metadatos locales ( .sjson ) cuando se require o import para que el archivo no se analice cuando se incluye, sino que se importa como un objeto fuente. Esto lo hace para que el archivo sea leído y analizado por las bibliotecas nativas subyacentes.
tipos.ts: 424
• Clases : string | string []
Una lista separada por comas o una matriz ordenada de nombres de clase para las palabras clave. El nombre correspondiente a la clase más probable se devolverá en el campo de transcripción cuando se plantee el evento de reconocimiento. Requerido si keyword.metadata no se especifica.
tipos.ts: 434
Estas propiedades se pueden pasar al objeto de configuración de la wakeword o keyword , pero no se comparten.
• Longitud Optional : number
advanced
La longitud de la ventana deslizante de la salida del codificador utilizada como entrada al clasificador, en milisegundos
tipos.ts: 293
• Codewidth Optional : number
advanced
El tamaño de la salida del codificador, en unidades vectoriales
tipos.ts: 299
• FFThoPLength Optional : number
advanced
El tiempo para omitir cada vez que se calcula el STFT superpuesto, en milisegundos
tipos.ts: 322
• FFTWindowsize Optional : number
advanced
El tamaño de la ventana de señal utilizada para calcular el STFT, en número de muestras, debe ser una potencia de 2 para la máxima eficiencia
tipos.ts: 306
• FFTWindowType Optional : string
advanced
Solo de Android
El nombre de la función de ventana se aplicará a cada marco de audio antes de calcular el STFT; Actualmente se admite la ventana "Hann"
tipos.ts: 315
• Melframel longitud Optional : number
advanced
El tiempo para omitir cada vez que se calcula el STFT superpuesto, en milisegundos
tipos.ts: 329
• MelframeWidth Optional : number
advanced
El tamaño de cada marco de espectrograma MEL, en número de componentes de FilterBank
tipos.ts: 336
• Pre -Emphasis Optional : number
advanced
El peso del filtro previo al énfasis se aplicará a la señal de audio normalizada (0 para no pre-énfasis)
tipos.ts: 343
• Número de ancho de estado Optional : number
advanced
El tamaño del estado del codificador, en las unidades vectoriales (el valor predeterminado al ancho de entorno de activación)
tipos.ts: 349
• Umbral Optional : number
advanced
El umbral de la salida posterior del clasificador, por encima del cual el desencadenante activa la tubería, en el rango [0, 1]
tipos.ts: 356
Apache-2.0
Copyright 2021 Spokestack