
React Plugin natif pour ajouter la voix à l'aide de Spokestack. Cela comprend la reconnaissance de la parole, le wakeword et la compréhension du langage naturel, ainsi que la synthèse du texte à la parole à l'aide de voix de spokestack.
Utilisation de NPM:
npm install --save react-native-spokestackou en utilisant du fil:
yarn add react-native-spokestackSuivez ensuite les instructions pour chaque plate-forme afin de relier React-Native-Spokestack à votre projet:
Tout d'abord, ouvrez Xcode et allez dans Project -> Info pour définir l'objectif de déploiement iOS à 13,0 ou plus.
Définissez également le déploiement sur 13.0 sous Target -> Général -> Informations de déploiement.
Lorsque Flipper a été initié à React Native, certains chemins de recherche de bibliothèque ont été définis pour Swift. Il y a eu un problème de longue date avec les chemins de recherche par défaut dans les projets natifs React, car un chemin de recherche a été ajouté pour Swift 5.0 qui a empêché toute autre bibliothèque native React d'utiliser les API disponibles uniquement dans SWIFT 5.2 ou ultérieure. SpokeStack-IOS, une dépendance de React-Native-Spokestack utilise ces API et Xcode ne parviendra pas à construire.
Heureusement, le correctif est assez simple. Accédez à votre cible -> Créer des paramètres et recherchez des "chemins de recherche de bibliothèque".
Supprimez ""$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)"" de la liste.
Avant d'exécuter pod install , assurez-vous de faire les modifications suivantes.
React-Native-Spokestack utilise des API relativement nouvelles uniquement disponibles dans iOS 13+. Réglez l'objectif de déploiement sur iOS 13 en haut de votre podfile:
platform :ios , '13.0' Nous devons également utiliser use_frameworks! dans notre podfile afin de soutenir les dépendances écrites dans Swift.
target 'SpokestackExample' do
use_frameworks!
#... Pour l'instant, use_frameworks! Ne fonctionne pas avec les flipper, nous devons donc également désactiver les flipper. Retirez toutes les lignes liées aux flipper dans votre podfile. Dans React Native 0.63.2+, ils ressemblent à ceci:
# 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 a cassé tous les projets utilisant use_frameworks! dans leurs podfiles.
Pour plus d'informations sur ce bogue, voir Facebook / React-Native # 31149.
Pour contourner ce problème, ajoutez ce qui suit à votre 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 Retirez votre dossier PodFile.loc et pods existant pour assurer aucun conflit, puis installez les pods:
$ npx pod-installAjoutez ce qui suit à votre info.plist pour activer les autorisations.
< 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 > Tandis que Flipper travaille sur la réparation de leur pod pour use_frameworks! , nous devons désactiver les flipper. Nous avons déjà supprimé les dépendances des flipper des pods ci-dessus, mais il reste un code dans appdelegate.m qui importe des flipper. Il y a deux façons de résoudre ce problème.
-DFB_SONARKIT_ENABLED=1 des drapeaux.Dans notre exemple d'application, nous avons fait l'option 1 et nous sommes partis dans le code Flipper au cas où ils fonctionnent à l'avenir et nous pouvons l'ajouter.
# import < AVFoundation/AVFoundation.h > Définissez la catégorie Audiossession. Il existe plusieurs configurations qui fonctionnent.
Ce qui suit est une suggestion qui devrait s'adapter à la plupart des cas d'utilisation:
- ( 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 ];
// ... L'utilisation de l'exemple utilise les ASR fournies par le système ( AndroidSpeechRecognizer et AppleSpeechRecognizer ). Cependant, AndroidSpeechRecognizer n'est pas disponible sur 100% des appareils. Si votre application prend en charge un appareil qui n'a pas de reconnaissance vocale intégrée, utilisez à la place SpokeStack ASR en définissant le profile sur un profil Spokestack à l'aide de l'hélice profile .
Voir notre documentation ASR pour plus d'informations.
// ...
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 " ) Ajoutez les autorisations nécessaires à votre AndroidManifest.xml . La première autorisation est déjà là déjà. La seconde est nécessaire pour utiliser le microphone.
<!-- 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 " /> L'autorisation Record_Audio est spéciale en ce qu'elle doit être à la fois répertoriée dans AndroidManifest.xml ainsi que demandée au moment de l'exécution. Il y a quelques façons de gérer cela (React-Native-Spokestack ne fait pas cela pour vous):
Bien que iOS affichera automatiquement les boîtes de dialogue des autorisations pour toutes les autorisations nécessaires, vous devez le faire manuellement dans Android.
React Native fournit déjà un module pour cela. Voir les autorisations de React Native pour plus d'informations.
Commencez à utiliser Spokestack ou consultez nos tutoriels approfondis sur ASR, NLU et TTS. Assurez-vous également de jeter un œil au livre de cuisine pour des solutions rapides aux problèmes courants.
Une application d'exemple de travail est incluse dans ce dépôt dans l' example/ dossier.
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 >
)
} Pour inclure des fichiers de modèle localement dans votre application (plutôt que de les télécharger à partir d'un CDN), vous devez également ajouter les extensions nécessaires afin que les fichiers puissent être inclus par Babel. Pour ce faire, modifiez votre metro.config.js .
const defaults = require ( 'metro-config/src/defaults/defaults' )
module . exports = {
resolver : {
assetExts : defaults . assetExts . concat ( [ 'tflite' , 'txt' , 'sjson' ] )
}
}Incluez ensuite les fichiers du modèle à l'aide d'objets source:
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' )
}
} ) Ce n'est pas nécessaire. Passez les URL distantes aux mêmes options de configuration et les fichiers seront téléchargés et mis en cache lors de l'appel pour la première fois initialize .
Voir le guide contribuant pour apprendre à contribuer au référentiel et au flux de travail de développement.
▸ Initialiser ( clientId , clientSecret , config? ): Promise void
Initialiser le pipeline de la parole; requis pour toutes les autres méthodes.
Les 2 premiers args sont vos informations d'identification Spokestack disponibles gratuitement sur https://spokestack.io. Évitez les codages en dur dans votre application. Il existe plusieurs façons d'inclure des variables d'environnement dans votre code.
Utilisation de processus.env: https://babeljs.io/docs/en/babel-plugin-transform-inline-environment-variables/
Utilisation d'un fichier .env local ignoré par Git: https://github.com/goatandsheep/react-native-dotenv https://github.com/luggit/react-native-config
Voir SpokestackConfig pour toutes les options 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
}
} ) | Nom | Taper |
|---|---|
clientId | string |
clientSecret | string |
config? | [SpokestackConfig](#SpokestackConfig) |
Promise void
index.ts: 64
▸ détruire (): Promise void
Détruit le pipeline de discours, supprime tous les auditeurs et libère toutes les ressources. Cela peut être appelé avant de réinitialiser le pipeline. Un bon endroit pour l'appeler est dans componentWillUnmount .
example
componentWillUnmount ( ) {
Spokestack . destroy ( )
} Promise void
index.ts: 81
▸ start (): Promise void
Démarrez le pipeline de la parole. Le pipeline de discours commence dans l'état 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
Arrêtez le pipeline de discours. Cela arrête efficacement ASR, VAD et Wakeword.
example
import Spokestack from 'react-native-spokestack`
// ...
await Spokestack . stop ( ) Promise void
index.ts: 110
▸ activer (): Promise void
Activer manuellement le pipeline de la parole. Ceci est nécessaire lors de l'utilisation d'un profil PTT. Les profils VAD peuvent également activer ASR sans avoir besoin d'appeler cette méthode.
example
import Spokestack from 'react-native-spokestack`
// ...
< Button title = "Listen" onClick = { ( ) => Spokestack . activate ( ) } /> Promise void
index.ts: 126
▸ désactiver (): Promise void
Désactiver le pipeline de discours. Si le profil comprend Wakeword, le pipeline reviendra à l'écoute du wakeword. Si la VAD est active, le pipeline peut réactiver sans appeler Activate ().
example
import Spokestack from 'react-native-spokestack`
// ...
< Button title = "Stop listening" onClick = { ( ) => Spokestack . deactivate ( ) } /> Promise void
index.ts: 142
▸ synthétiser ( input , format? , voice? ): Promise string
Synthétisez un peu de texte dans des rendements de la parole Promise<string> avec la chaîne étant l'URL d'un MPEG jouable.
Il n'y a actuellement qu'une seule voix gratuite disponible ("démo"). La voix peut être modifiée si vous avez créé une voix personnalisée à l'aide d'un compte Spokestack Maker. Voir https://spokestack.io/pricing#maker.
example
const url = await Spokestack . synthesize ( 'Hello world' )
play ( url ) | Nom | Taper |
|---|---|
input | string |
format? | [TTSFormat](#TTSFormat) |
voice? | string |
Promise string
index.ts: 158
▸ parler ( input , format? , voice? ): Promise void
Synthétisez un peu de texte dans la parole, puis lisez immédiatement l'audio via le système audio par défaut. La gestion de session audio peut devenir très complexe et nous vous recommandons d'utiliser une bibliothèque RN axée sur l'audio pour quelque chose de plus que la lecture très simple.
Il n'y a actuellement qu'une seule voix gratuite disponible ("démo").
example
await Spokestack . speak ( 'Hello world' ) | Nom | Taper |
|---|---|
input | string |
format? | [TTSFormat](#TTSFormat) |
voice? | string |
Promise void
index.ts: 174
▸ Classifier ( utterance ): Promise SpokestackNLUResult
Classifier l'énoncé à l'aide du modèle de compréhension du langage naturel d'intention / machine à sous adopté à Spokestack.Initialize (). Voir https://www.spokestack.io/docs/concepts/nlu pour plus d'informations.
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 | Nom | Taper |
|---|---|
utterance | string |
Promise SpokestackNLUResult
index.ts: 190
▸ isInitialized (): Promise boolean
Renvoie si le spokestack a été initialisé
example
console . log ( `isInitialized: ${ await Spokestack . isInitialized ( ) } ` ) Promise boolean
index.ts: 199
▸ isStarted (): Promise boolean
Renvoie si le pipeline de discours a été démarré
example
console . log ( `isStarted: ${ await Spokestack . isStarted ( ) } ` ) Promise boolean
index.ts: 208
▸ Isactivated (): Promise boolean
Renvoie si le pipeline de discours est actuellement activé
example
console . log ( `isActivated: ${ await Spokestack . isActivated ( ) } ` ) Promise boolean
index.ts: 217
• Confiance : number
Un nombre de 0 à 1 représentant la confiance du modèle NLU dans l'intention qu'il a reconnue, où 1 représente la confiance absolue.
Types.ts: 115
• Intention : string
L'intention basée sur le match fourni par le modèle NLU
types.ts: 113
• Slots : SpokestackNLUSlots
Données associées à l'intention, fournies par le modèle NLU
Types.ts: 117
▪ [Clé: string ]: SpokestackNLUSlot
• RawValue : string
La valeur de chaîne d'origine de la fente reconnue dans l'énoncé de l'utilisateur
Types.ts: 104
• Type : string
Le type de la machine à sous, tel que défini dans les métadonnées du modèle
types.ts: 100
• Valeur : any
La valeur analysée (dactylographiée) de la fente reconnue dans l'énoncé de l'utilisateur
Types.ts: 102
▸ AddeventListener ( eventType , listener , context? ): EmitterSubscription
Ligner à tout événement émis par les bibliothèques natives Voir les événements pour une liste de tous les événements disponibles.
example
useEffect ( ( ) => {
const listener = Spokestack . addEventListener ( 'recognize' , onRecognize )
// Unsubsribe by calling remove when components are unmounted
return ( ) => {
listener . remove ( )
}
} , [ ] ) | Nom | Taper | Description |
|---|---|---|
eventType | string | Nom de l'événement pour lequel nous enregistrons l'auditeur |
listener | ( event : any ) => void | La fonction de l'auditeur |
context? | Object | contexte de l'auditeur |
EmitterSubscription
index.ts: 237
▸ REVOPEVEventListener ( eventType , listener ): void
Supprimer un écouteur d'événements
example
Spokestack . removeEventListener ( 'recognize' , onRecognize ) | Nom | Taper | Description |
|---|---|---|
eventType | string | Nom de l'événement à émettre |
listener | (... args : any []) => any | Fonction à invoquer lorsque l'événement spécifié est émis |
void
index.ts: 253
▸ RemovealLListeners (): void
Supprimer tous les auditeurs existants
example
Spokestack . removeAllListeners ( ) void
index.ts: 265
Trois formats sont pris en charge lors de l'utilisation de Spokestack TTS. Texte brut, SSML et marque de discours. Voir https://www.speechmarkdown.org/ Si ce n'est pas familier avec la marque de la parole. L'IPA est attendu lors de l'utilisation de SSML ou de marque de discours.
• Speechmarkdown = 2
Types.ts: 73
• ssml = 1
Types.ts: 72
• Texte = 0
Types.ts: 71
Utilisez addEventListener() , removeEventListener() et removeAllListeners() pour ajouter et supprimer les gestionnaires d'événements. Tous les événements sont disponibles dans iOS et Android.
| Nom | Données | Description |
|---|---|---|
| reconnaître | { transcript: string } | Tiré chaque fois que la reconnaissance de la parole se termine avec succès. |
| partial_recognise | { transcript: string } | Tiré chaque fois que la transcription change pendant la reconnaissance vocale. |
| commencer | null | Tiré lorsque le pipeline de la parole commence (qui commence à écouter le wakeword ou commence VAD). |
| arrêt | null | Tiré lorsque le pipeline de discours s'arrête. |
| activer | null | Tiré lorsque le pipeline de la parole s'active, soit via le VAD, Wakeword, soit lors de l'appel .activate() . |
| désactiver | null | Tiré lorsque le pipeline de discours désactive. |
| jouer | { playing: boolean } | Tiré lorsque la lecture TTS commence et s'arrête. Voir la fonction speak() . |
| temps mort | null | Tiré lorsqu'un pipeline actif époque le manque de reconnaissance. |
| tracer | { message: string } | Tiré pour les messages de trace. La verbosité est déterminée par l'option traceLevel . |
| erreur | { error: string } | Tiré lorsqu'il y a une erreur dans Spokestack. |
Lorsqu'un événement d'erreur est déclenché, toutes les promesses existantes sont rejetées.
Ce sont les options de configuration qui peuvent être transmises à Spokestack.initialize(_, _, spokestackConfig) . Aucune option dans SpokestackConfig n'est requise.
SpokestackConfig a la structure suivante:
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 quantité de journalisation pour afficher un nombre inférieur signifie plus de journaux.
• Debug = 10
Types.ts: 58
• info = 30
Types.ts: 60
• Aucun = 100
Types.ts: 61
• perf = 20
Types.ts: 59
Les profils de pipeline ont mis en place le pipeline de discours en fonction de vos besoins
• ptt_native_asr = 2
La reconnaissance de la parole automatique d'Apple / Android est sur le moment où le pipeline de la parole est actif. Ceci est probablement le profil le plus courant lorsqu'il n'utilise pas Wakeword.
Types.ts: 24
• PTT_SPOKESTACK_ASR = 5
La reconnaissance de la parole automatique de Spokestack est sur le moment où le pipeline de la parole est actif. Ceci est probablement le profil le plus courant lorsqu'il n'utilise pas Wakeword, mais Spokestack ASR est préféré.
types.ts: 42
• tflite_wakeword_keyword = 6
Le mot de sillage tflite sensible à la VAD active le mot-clé TFLITE
types.ts: 46
• tflite_wakeword_native_asr = 0
Configurez Wakeword et utilisez ASR local Apple / Android ASR. Notez que wakeword.filter, wakeword.encode et wakeword.detect sont requis si un profil Wakeword est utilisé.
Types.ts: 12
• tflite_wakeword_spokestack_asr = 3
Configurez le wakeword et utilisez un spokestack distant ASR. Notez que wakeword.filter, wakeword.encode et wakeword.detect sont requis si un profil Wakeword est utilisé.
types.ts: 30
• vad_keyword_asr = 7
Reconnaître des mots clés Tflite déclenchés par VAD
types.ts: 50
• vad_native_asr = 1
La reconnaissance vocale automatique d'Apple / Android est activée lorsque la détection Active Voice le déclenche.
Types.ts: 17
• vad_spokestack_asr = 4
La reconnaissance de la parole automatique de Spokestack est activée lorsque la détection Active Voice le déclenche.
types.ts: 35
• AgcCompressionGainDB Optional : number
advanced
Android uniquement pour AcousticGainControl
Target Peak Audio audio, en -db, pour maintenir un pic de -9 dB, configurez une valeur de 9
types.ts: 192
• AgctargetlevelDBFS Optional : number
advanced
Android uniquement pour AcousticGainControl
Taux de compression de plage dynamique, en DBFS
Types.ts: 200
• ANSPOLICY Optional : "aggressive" | "very-aggressive" | "mild" | "medium"
advanced
Android uniquement pour acousticnoisesuppressor
Politique du bruit
Types.ts: 183
• Numéro de tampon Optional : number
advanced
Largeur du tampon, utilisé avec la largeur de camers pour déterminer la taille du tampon
types.ts: 155
• Numéro de cadre Optional : number
advanced
Largeur du cadre de la parole, dans MS
types.ts: 149
• Profil Optional : PipelineProfile
Les profils sont des collections de configurations communes pour les étapes de pipeline.
Si aucun profil n'est défini explicitement, SpokeStack détermine un profil par défaut sensible basé sur la configuration transmise à Spokestack.initialize() :
Si les fichiers de configuration de wakeword sont définis (et la configuration du mot-clé n'est pas), la valeur par défaut sera définie sur TFLITE_WAKEWORD_NATIVE_ASR .
Si les fichiers de configuration de mots clés sont définis (et la configuration de Wakeword ne l'est pas), la valeur par défaut sera définie sur VAD_KEYWORD_ASR .
Si les fichiers Wakeword et Keyword Config sont définis, la valeur par défaut sera définie sur TFLITE_WAKEWORD_KEYWORD .
Sinon, la valeur par défaut est PTT_NATIVE_ASR .
Types.ts: 139
• Samplerate Optional : number
Taux d'échantillonnage audio, en Hz
types.ts: 143
• VADFalldelay en Optional : number
advanced
Longueur de détection de bord tombant, dans MS; Cette valeur détermine le nombre d'échantillons négatifs reçus pour retourner le détecteur à négatif
Types.ts: 166
• Vadmode Optional : "quality" | "low-bitrate" | "aggressive" | "very-aggressive"
Mode détecteur d'activité vocale
types.ts: 159
• VadrisedElay Optional : number
advanced
Android uniquement
Longueur de fonction de détection de bord montante, dans MS; Cette valeur détermine le nombre d'échantillons positifs reçus pour retourner le détecteur à positif
types.ts: 175
• Métadonnées : string | number
Le fichier JSON pour les métadonnées NLU. Si elle est spécifiée, le modèle et le vocab sont également nécessaires.
Ce champ accepte 2 types de valeurs.
require ou import (par exemple metadata: require('./metadata.sjson') ). IMPORTANT: Une extension spéciale est utilisée pour les fichiers JSON de métadonnées locaux ( .sjson ) lors de l'utilisation require ou import afin que le fichier ne soit pas analysé lorsqu'il est inclus mais importé comme objet source. Cela fait que le fichier est lu et analysé par les bibliothèques natives sous-jacentes à la place.
types.ts: 223
• Modèle : string | number
Le modèle NLU TensorFlow-Lite. Si elles sont spécifiées, des métadonnées et du vocabulaire sont également nécessaires.
Ce champ accepte 2 types de valeurs.
require ou import (par exemple model: require('./nlu.tflite') )) Types.ts: 211
• Vocable : string | number
Un fichier txt contenant le vocabulaire NLU. S'il est spécifié, le modèle et les métadonnées sont également nécessaires.
Ce champ accepte 2 types de valeurs.
require ou import (par exemple vocab: require('./vocab.txt') )) Types.ts: 231
• number de InputLength en Optional
Types.ts: 244
• détecter : string | number
Le modèle "détecter" TensorFlow-Lite. S'il est spécifié, un filtre et un encodage sont également nécessaires.
Ce champ accepte 2 types de valeurs.
require ou import (par exemple detect: require('./detect.tflite') ))Le modèle d'encodage est utilisé pour effectuer chaque étape autorégressive sur les trames MEL; Ses entrées doivent être façonnées [Mel-Length, Mel-Width], et ses sorties [encodage-largeur], avec une entrée / sortie d'état supplémentaire en forme [largeur d'état]
types.ts: 272
• Encoder : string | number
Le modèle "encoder" TensorFlow-Lite. S'il est spécifié, le filtre et la détection sont également nécessaires.
Ce champ accepte 2 types de valeurs.
require ou import (par exemple encode: require('./encode.tflite') ))Ses entrées doivent être façonnées [la longueur d'encodage, la largeur d'encodage], et ses sorties
types.ts: 283
• Filtre : string | number
Le modèle "filtre" TensorFlow-Lite. S'il est spécifié, de détecter et d'encoder est également requis.
Ce champ accepte 2 types de valeurs.
require ou import (par exemple filter: require('./filter.tflite') ))Le modèle de filtre est utilisé pour calculer un cadre de spectrogramme MEL à partir du STFT linéaire; Ses entrées doivent être façonnées [largeur FFT] et ses sorties [largeur de Mel]
Types.ts: 260
• ActiveMax Optional : number
advanced
La longueur maximale d'une activation, en millisecondes, a utilisé pour chasser l'activation
types.ts: 373
• Activemin Optional : number
advanced
La durée minimale d'une activation, en millisecondes, a utilisé pour ignorer une désactivation de la VAD après le wakeword
types.ts: 366
• Optional de demande de temps : number
ios uniquement
Durée pour permettre à une demande Apple ASR de s'exécuter, en millisecondes. Apple a une limite sans papiers de 60000 ms par demande.
Types.ts: 380
• RMSALPHA Optional : number
Android advanced uniquement
Le taux de mise à jour de la moyenne mobile (EWMA) pondérée en fonction de façon exponentielle pour l'énergie du signal RMS actuel (0 pour aucune normalisation RMS)
types.ts: 397
• RMSTarget Optional : number
Android advanced uniquement
L'énergie du signal carré (RMS) à racine linéaire souhaitée, qui est utilisée pour la normalisation du signal et doit être réglée sur la cible RMS utilisée pendant l'entraînement
Types.ts: 389
• Wakewords Optional : string | string []
ios uniquement
Un tableau ordonné ou une liste séparée par des virgules de mots clés de wakeword nécessaires uniquement lorsque vous ne passez pas les chemins de filtre, de détection et de codés.
types.ts: 404
• détecter : string | number
Le modèle "détecter" TensorFlow-Lite. S'il est spécifié, un filtre et un encodage sont également nécessaires.
Ce champ accepte 2 types de valeurs.
require ou import (par exemple detect: require('./detect.tflite') ))Le modèle d'encodage est utilisé pour effectuer chaque étape autorégressive sur les trames MEL; Ses entrées doivent être façonnées [Mel-Length, Mel-Width], et ses sorties [encodage-largeur], avec une entrée / sortie d'état supplémentaire en forme [largeur d'état]
types.ts: 272
• Encoder : string | number
Le modèle "encoder" TensorFlow-Lite. S'il est spécifié, le filtre et la détection sont également nécessaires.
Ce champ accepte 2 types de valeurs.
require ou import (par exemple encode: require('./encode.tflite') ))Ses entrées doivent être façonnées [la longueur d'encodage, la largeur d'encodage], et ses sorties
types.ts: 283
• Filtre : string | number
Le modèle "filtre" TensorFlow-Lite. S'il est spécifié, de détecter et d'encoder est également requis.
Ce champ accepte 2 types de valeurs.
require ou import (par exemple filter: require('./filter.tflite') ))Le modèle de filtre est utilisé pour calculer un cadre de spectrogramme MEL à partir du STFT linéaire; Ses entrées doivent être façonnées [largeur FFT] et ses sorties [largeur de Mel]
Types.ts: 260
Des metadata ou classes sont nécessaires, et ils s'excluent mutuellement.
• Métadonnées : string | number
Le fichier JSON pour les métadonnées des mots clés. Requis si keyword.classes n'est pas spécifiée.
Ce champ accepte 2 types de valeurs.
require ou import (par exemple metadata: require('./metadata.sjson') ). IMPORTANT: Une extension spéciale est utilisée pour les fichiers JSON de métadonnées locaux ( .sjson ) lors de l'utilisation require ou import afin que le fichier ne soit pas analysé lorsqu'il est inclus mais importé comme objet source. Cela fait que le fichier est lu et analysé par les bibliothèques natives sous-jacentes à la place.
Types.ts: 424
• Classes : string | string []
Une liste séparée par des virgules ou un tableau ordonné de noms de classe pour les mots clés. Le nom correspondant à la classe la plus probable sera renvoyé dans le champ Transcription lorsque l'événement de reconnaissance sera augmenté. Requis si keyword.metadata n'est pas spécifié.
Types.ts: 434
Ces propriétés peuvent être transmises à l'objet wakeword ou keyword Config, mais ne sont pas partagés.
• Encodage Optional : number
advanced
La longueur de la fenêtre coulissante de la sortie de l'encodeur utilisée comme entrée au classificateur, en millisecondes
types.ts: 293
• Encodewidsith Optional : number
advanced
La taille de la sortie de l'encodeur, en unités vectorielles
Types.ts: 299
• Optional FFTHOPE : number
advanced
La durée pour sauter chaque fois que le STFT qui se chevauche est calculé, en millisecondes
types.ts: 322
• FFTWindowSize Optional : number
advanced
La taille de la fenêtre de signal utilisée pour calculer le STFT, dans le nombre d'échantillons - devrait être une puissance de 2 pour une efficacité maximale
types.ts: 306
• FFTWindowType Optional : string
advanced
Android uniquement
Le nom de la fonction de fenêtre à appliquer à chaque trame audio avant de calculer le STFT; Actuellement, la fenêtre "Hann" est prise en charge
Types.ts: 315
• MelframeLength Optional : number
advanced
La durée pour sauter chaque fois que le STFT qui se chevauche est calculé, en millisecondes
Types.ts: 329
• Melframewidth Optional : number
advanced
La taille de chaque cadre de spectrogramme MEL, en nombre de composants de la banque filtrante
Types.ts: 336
• Pré-emphasie Optional : number
advanced
Le poids du filtre préalable à l'application pour s'appliquer au signal audio normalisé (0 pour aucune pré-lourdeur)
types.ts: 343
• Optional d'état facultative : number
advanced
La taille de l'état de l'encodeur, dans les unités vectorielles (par défaut, la largeur de la détection de wake))
Types.ts: 349
• Seuil Optional : number
advanced
Le seuil de la sortie postérieure du classificateur, au-dessus de laquelle le déclencheur active le pipeline, dans la plage [0, 1]
Types.ts: 356
Apache-2.0
Copyright 2021 Spokestack