
Eine native React -Komponente zum Hinzufügen von Spokestack zu einer reag -nativen App.

Installieren Sie diese Bibliothek mit den Peer -Abhängigkeiten
Ein Einzeiler, der alle Abhängigkeiten installiert
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-feedbackBefolgen Sie dann die Anweisungen für jede Plattform, um die React-Native-Spokestack mit Ihrem Projekt zu verknüpfen:
React-Native-Spokestack verwendet relativ neue APIs, die nur in iOS 13+ verfügbar sind. Stellen Sie sicher, dass Sie Ihr Bereitstellungsziel auf iOS 13 einstellen.
Öffnen Sie zunächst XCode und gehen Sie zu Projekten -> Infos, um das iOS -Bereitstellungsziel auf 13,0 oder höher festzulegen.
Setzen Sie auch die Bereitstellung auf 13.0 unter Ziel -> Allgemein -> Bereitstellungsinformationen ein.
Als Flipper als Reaktionsnative vorgestellt wurde, wurden einige Bibliothekssuchpfade für Swift festgelegt. Es gab ein langjähriges Problem mit den Standard -Suchpfaden in React Native Projects, da für Swift 5.0 ein Suchpfad hinzugefügt wurde, wodurch andere reag -native Bibliotheken nur in Swift 5.2 oder höher verwendet wurden. Spokestack-IOS, eine Abhängigkeit von React-Native-Spokestack, nutzt diese APIs und Xcode wird nicht erstellt.
Glücklicherweise ist das Fix ziemlich einfach. Gehen Sie zu Ihrem Ziel -> Erstellen Sie Einstellungen und suchen Sie nach "Bibliothekssuchpfaden".
Entfernen Sie ""$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)"" aus der Liste.
Stellen Sie vor dem Ausführen pod install die folgenden Änderungen vor.
platform :ios , '13.0' Wir müssen auch use_frameworks! in unserer Podfile, um Abhängigkeiten in Swift zu unterstützen.
target 'SpokestackExample' do
use_frameworks!
#... use_frameworks! Funktioniert nicht mit Flipper, daher müssen wir auch Flipper deaktivieren. Entfernen Sie alle flipperbezogenen Linien in Ihrer Podfile. In React Native 0.63.2 sehen sie so aus:
# X Remove or comment out these lines X
# use_flipper!
# post_install do |installer|
# flipper_post_install(installer)
# end
# XX Wir verwenden die Reaktions-Nativ-Permission, um die Microfon-Genehmigung (iOS und Android) und die Spracherkennungsgenehmigung (nur iOS) zu überprüfen und anzufordern. Diese Bibliothek trennt jede Berechtigung in einen eigenen Pod, um zu vermeiden, dass Ihre App mit Code, den Sie nicht verwenden, aufblasen. Fügen Sie Ihren Podfile die folgenden Pods hinzu:
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 hat alle Projekte mit use_frameworks! in ihren Podfiles.
Weitere Informationen zu diesem Fehler finden Sie in Facebook/React-Native#31149.
Um dieses Problem zu verarbeiten, fügen Sie Folgendes zu Ihrem Podfile hinzu:
# 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 Entfernen Sie Ihren vorhandenen Ordner Podfile.lock und Pods, um keine Konflikte zu gewährleisten, und installieren Sie dann die Pods:
$ npx pod-installFügen Sie Ihren Info.plist Folgendes hinzu, um Berechtigungen zu aktivieren. Stellen Sie in Xcode auch sicher, dass Ihr iOS -Bereitstellungsziel auf 13,0 oder höher festgelegt ist.
< 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 > Während Flipper daran arbeitet, ihren Pod für use_frameworks! Wir müssen Flipper deaktivieren. Wir haben die Flipper -Abhängigkeiten bereits aus den oben genannten Schoten entfernt, aber es bleibt einen Code im AppDelegate.m, der Flipper importiert. Es gibt zwei Möglichkeiten, dies zu beheben.
-DFB_SONARKIT_ENABLED=1 aus Flags.In unserer Beispiel -App haben wir Option 1 durchgeführt und sind im Flipper -Code gelassen, falls sie es in Zukunft zum Laufen bringen und wir ihn wieder hinzufügen können.
# import < AVFoundation/AVFoundation.h > Legen Sie die Audiosessionskategorie fest. Es gibt mehrere Konfigurationen, die funktionieren.
Das Folgende ist ein Vorschlag, der die meisten Anwendungsfälle entsprechen sollte:
- ( 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 ];
// ... Die Beispielnutzung verwendet die systembereiteten ASRs ( AndroidSpeechRecognizer und AppleSpeechRecognizer ). AndroidSpeechRecognizer ist jedoch auf 100% der Geräte nicht verfügbar. Wenn Ihre App ein Gerät unterstützt, das keine integrierte Spracherkennung enthält, verwenden Sie stattdessen Spokestack ASR, indem Sie das profile mithilfe der profile auf ein Spokestack-Profil einstellen.
Weitere Informationen finden Sie in unserer ASR -Dokumentation.
// ...
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 " ) Fügen Sie die erforderlichen Berechtigungen zu Ihrem AndroidManifest.xml hinzu. Die erste Erlaubnis ist oft schon da. Die zweite wird für die Verwendung des Mikrofons benötigt.
<!-- 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'
} }
/>
)
} Um Modelldateien lokal in Ihre App aufzunehmen (anstatt sie von einem CDN herunterzuladen), müssen Sie auch die erforderlichen Erweiterungen hinzufügen, damit die Dateien von Babel enthalten sein können. Bearbeiten Sie dazu Ihre 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' ] )
}
}Geben Sie dann Modelldateien mithilfe von Quellobjekten ein:
< 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' )
} }
/> Dies ist nicht erforderlich. Übergeben Sie Remote -URLs an dieselben Konfigurationsoptionen, und die Dateien werden beim ersten Aufrufen initialize heruntergeladen und zwischengespeichert.
Weitere Informationen finden Sie im beitragenden Leitfaden, um zu erfahren, wie Sie zum Repository und den Entwicklungsworkflow beitragen.
<SpokestackTray /> Komponenten -Requisiten • Optional Buttonwidth : number (Standard: 60 )
Breite (und Höhe) der Mikrofon -Taste
src/spokestacktray.tsx: 132
• ClientID : string
Ihre Spokestack -Token, die in Ihrem Spokestack -Konto unter https://spokestack.io/account generiert wurden. Erstellen Sie kostenlos ein Konto und generieren Sie dann ein Token. Dies ist aus dem Feld "ID".
src/spokestacktray.tsx: 74
• ClientSecret : string
Ihre Spokestack -Token, die in Ihrem Spokestack -Konto unter https://spokestack.io/account generiert wurden. Erstellen Sie kostenlos ein Konto und generieren Sie dann ein Token. Dies ist aus dem "geheimen" Feld.
src/spokestacktray.tsx: 81
• Optional Closedelay : number (Standard: 0 )
Wie lange kann man warten, um das Tablett nach dem Sprechen zu schließen (MS)
src/spokestacktray.tsx: 134
• Optional Debug : boolean
Zeigen Sie Debug-Nachrichten von React-Native-Spokestack
src/spokestacktray.tsx: 136
• Optional Dauer : number (Standard: 500 )
Dauer für die Tray -Animation (MS)
src/spokestacktray.tsx: 138
• Optional Lockerung : EasingFunction (Standard: Lockern.bezier (0,77, 0,41, 0,2, 0,84) )
Lockerungsfunktion für die Tray -Animation
src/spokestacktray.tsx: 140
• Optional ExitNodes : string []
Alle Knoten in diesem Array sollten das Gespräch beenden und das Tablett schließen
src/spokestacktray.tsx: 150
• Optional Schriftfamilie : string
Schriftart für "Hören ...", "Laden ..." und Chat -Bubble -Text.
src/spokestacktray.tsx: 155
• Optional GradientColors : string [] (Standard: ["#61FAE9", "#2F5BEA"] )
Farben für den linearen Gradienten, das beim Hören gezeigt wird, können eine beliebige Anzahl von Farben sein (empfohlen: 2-3)
src/spokestacktray.tsx: 160
• Optional Greet : boolean (Standard: Falsch )
Ob Sie den Benutzer mit einer Begrüßungsnachricht begrüßen möchten, wenn sich das Tablett öffnet. HINWEIS: handleIntent muss auf die Absicht "Greet" antworten.
src/spokestacktray.tsx: 166
• Optional Haptic : boolean (Standard: True )
Stellen Sie dies auf false ein, um das Haptische zu deaktivieren, das gespielt wird, wenn das Tablett zuhören.
src/spokestacktray.tsx: 171
• Optional Schlüsselwort : KeywordConfig
Konfiguration für die Keyword -Erkennung
Die Felderfilter-, Erkennungs-, Enkodier- und Metadatenfelder akzeptieren 2 Wertearten.
require oder import abgerufen wurde (z. B. model: require('./nlu.tflite') ))Siehe https://www.spokestack.io/docs/concepts/keywords, um mehr über die Keyword -Erkennung zu erfahren.
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'
} }Sie können auch Modelle im Voraus herunterladen und aus lokalen Dateien aufnehmen. Hinweis: Dies erfordert eine Änderung Ihrer Metro.Config.js. Weitere Informationen finden Sie in "einschließlich Modelldateien in Ihrem App -Bundle" in der 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' )
} }Die Keyword -Konfiguration akzeptiert auch ein Klassenfeld, wenn Metadaten nicht angegeben sind.
// ...
keyword = { {
detect : require ( './detect.tflite' ) ,
encode : require ( './encode.tflite' ) ,
filter : require ( './filter.tflite' ) ,
classes : [ 'one' , 'two' , 'three]
} } src/spokestacktray.tsx: 221
• Optional Minhoß : number (Standard: 170 )
Mindesthöhe für das Tablett
src/spokestacktray.tsx: 223
• NLU : NLUConfig
Das NLU TensorFlow Lite Model (.Tflite), JSON -Metadaten und NLU -Vokabeln (.txt)
Alle 3 Felder akzeptieren 2 Arten von Werten.
require oder import abgerufen wurde (z. B. model: require('./nlu.tflite') ))Siehe https://spokestack.io/docs/concepts/nlu, um mehr über NLU zu erfahren.
// ...
nlu = { {
model : 'https://somecdn.com/nlu.tflite' ,
vocab : 'https://somecdn.com/vocab.txt' ,
metadata : 'https://somecdn.com/metadata.json'
} }Sie können auch lokale Dateien übergeben. Hinweis: Dies erfordert eine Änderung Ihrer Metro.Config.js. Weitere Informationen finden Sie in "einschließlich Modelldateien in Ihrem App -Bundle" in der 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
• Optional Ausrichtung : "left" | "right" (Standard: "links" )
Die Tabletttaste kann auf beiden Seiten des Bildschirms ausgerichtet werden
src/spokestacktray.tsx: 235
• Optional PrimaryColor : string (Standard: "#2f5bea" )
Diese Farbe wird verwendet, um das Tablett zu thematisieren und wird in den MIC -Taste und den Sprachblasen verwendet.
src/spokestacktray.tsx: 240
• Optional Profil : PipelineProfile
Das Spokestack-Konfigurationsprofil, das an reagieren nativen Spokestack geleitet werden soll. Diese sind ab Version 4.0.0 bei React-Native-Spokestack erhältlich.
Wenn Wakeword -Konfigurationsdateien angegeben sind, ist der Standardwert TFLITE_WAKEWORD_NATIVE_ASR . Andernfalls ist die Standardeinstellung 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
• Optional Refreshmodelle : boolean
Verwenden Sie dies sparsam, um das Wakeword-, Keyword- und NLU -Modelle auf dem Gerät zu aktualisieren (überschreiben). <SpokestackTray refreshModels={process.env.NODE_ENV !== 'production'} ... />
src/spokestacktray.tsx: 268
• Optional Saygreeting : boolean (Standard: TRUE )
Ob Sie die Begrüßung sprechen oder nur eine Chat -Blase mit der Greet -Nachricht anzeigen möchten, auch wenn der Ton eingeschaltet ist.
src/spokestacktray.tsx: 274
• Optional Soundoffimage : ReactNode (Standard: (<Bildquelle = {Soundoffimage} style = {{width: 30, Höhe: 30}} />) )
Ersetzen Sie den Sound -Off -Bild, indem Sie eine React -Bildkomponente übergeben
src/spokestacktray.tsx: 278
• Optional Soundonimage : ReactNode (Standard: (<Bildquelle = {Soundonimage} style = {{width: 30, Höhe: 30}} />) )
Ersetzen Sie den Sound auf dem Bild, indem Sie eine React -Bildkomponente übergeben
src/spokestacktray.tsx: 276
• Optional SpokestackConfig : Partial SpokestackConfig
Übergeben Sie Optionen direkt an die Funktion von Spokestack.initialize () von React-Native-Spokestack. Weitere Optionen finden Sie unter https://github.com/spokestack/react-native-spokestack.
src/spokestacktray.tsx: 285
• Optional Startheight : number (Standard: 220 )
Starthöhe für Tablett
src/spokestacktray.tsx: 287
• Optional Stil : false | RegisteredStyle ViewStyle | Value | AnimatedInterpolation | WithAnimatedObject ViewStyle | WithAnimatedArray < false | ViewStyle | RegisteredStyle ViewStyle | RecursiveArray < false | ViewStyle | RegisteredStyle < ViewStyle >> | Readonly ( false | ViewStyle | RegisteredStyle Style ViewStyle ) []>
Diese Style -Requisite wird an den Container des Tabletts übergeben
src/spokestacktray.tsx: 289
• Optional TTSFormat : TTSFormat (Standard: ttsformat.text )
Das Format für den Text übergeben an Spokestack.synthesize
src/spokestacktray.tsx: 291
• Optional Stimme : string (Standard: "Demo-männlich" )
Ein Schlüssel für eine Stimme in Spokestack TTS, die an spokestack.synthesize übergeben wurde. Dies kann nur geändert werden, wenn Sie eine benutzerdefinierte Stimme mit einem Spokestack Maker -Konto erstellt haben. Siehe https://spokestack.io/pricing#maker. Wenn nicht angegeben, wird Spokestacks kostenlose "Demo-männliche" Stimme verwendet.
src/spokestacktray.tsx: 298
• Optional Wakeword : WakewordConfig
Die NLU -Tensorflow Lite -Modelle (.Tflite) für Wakeword.
Alle 3 Felder akzeptieren 2 Arten von Werten.
require oder import abgerufen wurde (z. B. model: require('./nlu.tflite') ))Siehe https://spokestack.io/docs/concepts/wakeword-models, um mehr über Wakeword zu erfahren
Spokestack bietet Beispiel -Wakeword -Modelldateien ("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'
} }Sie können diese Modelle auch im Voraus herunterladen und aus lokalen Dateien einbeziehen. Hinweis: Dies erfordert eine Änderung Ihrer Metro.Config.js. Weitere Informationen finden Sie in "einschließlich Modelldateien in Ihrem App -Bundle" in der Readme.md.
// ...
wakeword = { {
detect : require ( './detect.tflite' ) ,
encode : require ( './encode.tflite' ) ,
filter : require ( './filter.tflite' )
} } src/spokestacktray.tsx: 332
▸ Optional EditTranscript ( transcript ): string
Bearbeiten Sie das Transkript vor der Klassifizierung und bevor die Benutzerantwortblase angezeigt wird.
| Name | Typ |
|---|---|
transcript | string |
string
src/spokestacktray.tsx: 145
▸ Handle ( intent , slots? utterance? ): [IntentResult](#IntentResult)
Diese Funktion nimmt eine Absicht aus der NLU und gibt ein Objekt mit einem eindeutigen Konversationsknotennamen (den Sie definieren) und eine Aufforderung zurück, von TTS und gesprochen zu werden.
Hinweis: Die Eingabeaufforderung wird nur in einer Chat -Blase angezeigt, wenn der Ton ausgeschaltet wurde.
| Name | Typ |
|---|---|
intent | string |
slots? | SpokestackNLUSlots |
utterance? | string |
[IntentResult](#IntentResult)
src/spokestacktray.tsx: 91
▸ Optional onclose (): void
Gerufen, wenn das Tablett geschlossen wurde
void
src/spokestacktray.tsx: 227
▸ Optional OnError ( e ): void
Gerufen, wenn es einen Fehler von Spokestack gibt
| Name | Typ |
|---|---|
e | SpokestackErrorEvent |
void
src/spokestacktray.tsx: 229
▸ Optional Onopen (): void
Gerufen, wenn das Tablett geöffnet ist
void
src/spokestacktray.tsx: 231
• Optional Daten : any
Alle anderen Daten, die Sie möglicherweise hinzufügen möchten
src/spokestacktray.tsx: 64
• Optional noInterrupt : boolean
Setzen Sie auf true , um den Wakeword -Erkenntnis während der Wiedergabe der Eingabeaufforderung zu stoppen.
src/spokestacktray.tsx: 62
• Knoten : string
Ein benutzerdefinierter Schlüssel, um anzugeben, wo sich der Benutzer in der Konversation befindet, enthält dies in der exitNodes Prop, wenn Spokestack nach der Aufforderung nicht erneut zuhören sollte.
src/spokestacktray.tsx: 55
• Eingabeaufforderung : string
Wird in Sprache verarbeitet, es sei denn, das Tablett befindet sich im stillen Modus
src/spokestacktray.tsx: 57
<SpokestackTray /> KomponentenmethodenDiese Methoden sind in der Spokestacktray -Komponente erhältlich. Verwenden Sie einen React Ref, um auf diese Methoden zuzugreifen.
const spokestackTray = useRef ( null )
// ...
< SpokestackTray ref = { spokestackTray }
// ...
spokestackTray . current . say ( 'Here is something for Spokestack to say' ) HINWEIS : In den meisten Fällen sollten Sie listen anstelle von open anrufen.
▸ open (): void
Öffnen Sie das Tablett, begrüßen Sie (falls zutreffend) und hören Sie zu
void
src/spokestacktray.tsx: 743
▸ close (): void
Schließen Sie das Tablett, hören Sie auf und starten Sie das Wakeword neu,
void
src/spokestacktray.tsx: 754
▸ Say ( input ): Promise void
Übergibt die Eingabe an Spokestack.syntheSize (), spielt das Audio und fügt eine Sprachblase hinzu.
| Name | Typ |
|---|---|
input | string |
Promise void
src/spokestacktray.tsx: 766
▸ AddBubble ( bubble ): void
Fügen Sie der Chat -Oberfläche eine Blase (System oder Benutzer) hinzu
| Name | Typ |
|---|---|
bubble | Bubble |
void
src/spokestacktray.tsx: 799
• Isleft : boolean
SRC/Komponenten/Sprachbubbles.tsx: 9
• Text : string
SRC/Komponenten/Sprachbubbles.tsx: 8
▸ Togglesilent (): Promise boolean
Stille Modus umschalten
Promise boolean
src/spokestacktray.tsx: 816
▸ issilent (): boolean
Gibt zurück, ob sich das Tablett im stillen Modus befindet
boolean
src/spokestacktray.tsx: 828
Diese Funktionen sind als Exporte von React-Native-Spokestack-Tray erhältlich
▸ Hören (): Promise void
Sagt der Spokestack -Sprachpipeline, sie soll anfangen zuzuhören. Bitten Sie auch die Erlaubnis, gegebenenfalls zuzuhören. Es wird versuchen, die Pipeline zu starten, bevor Sie aktiviert werden, wenn sie nicht bereits gestartet werden. Diese Funktion tut nichts, wenn sich die App im Hintergrund befindet.
import { listen } from 'react-native-spokestack-tray'
try {
await listen()
} catch (error) {
console.error(error)
}
Promise void
src/spokestack.ts: 21
▸ StopListinging (): Promise void
Promise void
src/spokestack.ts: 30
▸ Const isListening (): Promise boolean
Gibt zurück, ob Spokestack derzeit zuhört
console . log ( `isListening: ${ await isListening ( ) } ` ) Promise boolean
src/index.ts: 19
▸ Const isinitialisiert (): Promise boolean
Gibt zurück, ob Spokestack initialisiert wurde
console . log ( `isInitialized: ${ await isInitialized ( ) } ` ) Promise boolean
src/index.ts: 27
▸ Const isStarted (): Promise boolean
Gibt zurück, ob die Sprachpipeline gestartet wurde
console . log ( `isStarted: ${ await isStarted ( ) } ` ) Promise boolean
src/index.ts: 35
▸ Const addEventListener ( eventType , listener , context? ): EmitterSubscription
Binden Sie an jedes Ereignis, das von den nativen Bibliotheken emittiert wird. Die Beschreibungen der Ereignisse finden Sie im Ende der Readme.md.
useEffect ( ( ) => {
const listener = addEventListener ( 'recognize' , onRecognize )
// Unsubscribe by calling remove when components are unmounted
return ( ) => {
listener . remove ( )
}
} , [ ] ) | Name | Typ |
|---|---|
eventType | string |
listener | ( event : any ) => void |
context? | Object |
EmitterSubscription
SRC/INDEX.TS: 51
▸ Const remeeventListener ( eventType , listener ): void
Entfernen Sie einen Event -Hörer
removeEventListener ( 'recognize' , onRecognize ) | Name | Typ |
|---|---|
eventType | string |
listener | (... args : any []) => any |
void
SRC/INDEX.TS: 59
▸ Const removealllisteners (): void
Entfernen Sie alle vorhandenen Zuhörer
componentWillUnmount ( ) {
removeAllListeners ( )
} void
SRC/INDEX.TS: 69
Verwenden Sie addEventListener() , removeEventListener() und removeAllListeners() um Ereignishandler hinzuzufügen und zu entfernen. Alle Veranstaltungen sind sowohl in iOS als auch in Android erhältlich.
| Name | Daten | Beschreibung |
|---|---|---|
| erkennen | { transcript: string } | Abgefeuert, wenn die Spracherkennung erfolgreich abgeschlossen ist. |
| partial_recognize | { transcript: string } | Abgefeuert, wenn das Transkript während der Spracherkennung ändert. |
| Start | null | Gefeuert, wenn die Sprachpipeline beginnt (was beginnt, nach Wakeword zu hören oder VAD zu starten). |
| stoppen | null | Abgefeuert, wenn die Sprachpipeline anhält. |
| aktivieren | null | Abgefeuert, wenn die Sprachpipeline entweder über das Wakeword oder beim Aufrufen von .activate() aktiviert wird. |
| deaktivieren | null | Gefeuert, wenn die Sprachpipeline deaktiviert ist. |
| spielen | { playing: boolean } | Gefeuert, wenn die TTS -Wiedergabe beginnt und aufhört. Siehe die Funktion speak() . |
| Time-out | null | Gefeuert, wenn eine aktive Pipeline aufgrund mangelnder Anerkennung ausfällt. |
| verfolgen | { message: string } | Für Spurenmeldungen abgefeuert. Die Ausführlichkeit wird durch die traceLevel -Option bestimmt. |
| Fehler | { error: string } | Feuert bei Spokestack ein Fehler. |
Wenn ein Fehlerereignis ausgelöst wird, werden vorhandene Versprechen abgelehnt.
Diese Versorgungsfunktionen werden von Spokestack verwendet, um die Mikrofonberechtigung auf iOS und Android- und Spracherkennungsgenehmigung auf iOS zu überprüfen.
▸ CheckSpeech (): Promise boolean
Diese Funktion kann verwendet werden, um zu prüfen, ob der Benutzer die erforderliche Sprachberechtigung erteilt hat. Auf iOS umfasst dies sowohl Mikrofon- als auch Sprachreknogition. Auf Android wird nur das Mikrofon benötigt.
import { checkSpeech } from 'react-native-spokestack-tray'
// ...
const hasPermission = await checkSpeech ( ) Promise boolean
SRC/Utils/Berechtigungen.TS: 78
▸ RequestSpeech (): Promise boolean
Diese Funktion kann verwendet werden, um die erforderliche Rede -Genehmigung tatsächlich anzufordern. Auf iOS umfasst dies sowohl Mikrofon- als auch Sprachreknogition. Auf Android wird nur das Mikrofon benötigt.
Hinweis: Wenn der Benutzer in der Vergangenheit auf iOS abgelehnt hat, muss der Benutzer an Einstellungen gesendet werden.
import { requestSpeech } from 'react-native-spokestack-tray'
// ...
const hasPermission = await requestSpeech ( ) Promise boolean
SRC/Utils/Berechtigungen.TS: 106
MIT