
Reagieren Sie das native Plugin zum Hinzufügen von Sprache mit Spokestack. Dies umfasst Spracherkennung, Wakeword und natürliches Sprachverständnis sowie Synthese von Text mit Sprache mithilfe von Spokestack -Stimmen.
Verwenden von NPM:
npm install --save react-native-spokestackoder mit Garn:
yarn add react-native-spokestackBefolgen Sie dann die Anweisungen für jede Plattform, um die React-Native-Spokestack mit Ihrem Projekt zu verknüpfen:
Ö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.
React-Native-Spokestack verwendet relativ neue APIs, die nur in iOS 13+ verfügbar sind. Stellen Sie das Bereitstellungsziel auf iOS 13 ganz oben in Ihrem Podfile fest:
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!
#... Im Moment, 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 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.
< 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 {
// 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 " ) 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 " /> Die Record_audio -Berechtigung ist insofern von Bedeutung, als sie sowohl im AndroidManifest.xml als auch zur Laufzeit angefordert werden muss. Es gibt einige Möglichkeiten, dies zu bewältigen (React-Native-Spokestack tut dies nicht für Sie):
Während iOS Berechtigungsdialoge automatisch für alle benötigten Berechtigungen aufruft, müssen Sie dies manuell in Android tun.
React Native bietet dafür bereits ein Modul. Weitere Informationen finden Sie unter React Nords Berechtigungen und und für weitere Informationen.
Beginnen Sie mit Spokestack oder schauen Sie sich unsere ausführlichen Tutorials auf ASR, NLU und TTS an. Schauen Sie sich auch das Kochbuch an, um schnelle Lösungen für häufig vorkommende Probleme zu erhalten.
Eine funktionierende Beispiel -App ist in diesem Repo im example/ Ordner enthalten.
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 >
)
} 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 : {
assetExts : defaults . assetExts . concat ( [ 'tflite' , 'txt' , 'sjson' ] )
}
}Geben Sie dann Modelldateien mithilfe von Quellobjekten ein:
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' )
}
} ) 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.
▸ initialisieren ( clientId , clientSecret , config? ): Promise void
Initialisieren Sie die Sprachpipeline; für alle anderen Methoden erforderlich.
Die ersten 2 Argumente sind Ihre Spokestack -Anmeldeinformationen kostenlos von https://spokestack.io. Vermeiden Sie diese in Ihrer App festkodiert. Es gibt verschiedene Möglichkeiten, Umgebungsvariablen in Ihren Code aufzunehmen.
Verwenden Sie process.env: https://babeljs.io/docs/en/babel-plugin-transform-inline-environment-variables/
Verwenden einer lokalen .Env-Datei, die von GIT ignoriert wurde: https://github.com/goatandsheep/react-native-dotenv https://github.com/luggit/react-native-config
Sehen Sie SpokestackConfig für alle verfügbaren Optionen.
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
}
} ) | Name | Typ |
|---|---|
clientId | string |
clientSecret | string |
config? | [SpokestackConfig](#SpokestackConfig) |
Promise void
Index.ts: 64
▸ Destroy (): Promise void
Zerstört die Sprachpipeline, entfernt alle Zuhörer und befreit alle Ressourcen. Dies kann aufgerufen werden, bevor die Pipeline neu initialisiert wird. Ein guter Ort, um dies zu nennen, ist in componentWillUnmount .
example
componentWillUnmount ( ) {
Spokestack . destroy ( )
} Promise void
Index.ts: 81
▸ start (): Promise void
Starten Sie die Sprachpipeline. Die Sprachpipeline beginnt im deactivate Zustand.
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
Stoppen Sie die Sprachpipeline. Dies stoppt effektiv ASR, VAD und Wakeword.
example
import Spokestack from 'react-native-spokestack`
// ...
await Spokestack . stop ( ) Promise void
Index.ts: 110
▸ active (): Promise void
Aktivieren Sie manuell die Sprachpipeline. Dies ist bei Verwendung eines PTT -Profils erforderlich. VAD -Profile können ASR auch aktivieren, ohne diese Methode aufzurufen.
example
import Spokestack from 'react-native-spokestack`
// ...
< Button title = "Listen" onClick = { ( ) => Spokestack . activate ( ) } /> Promise void
Index.ts: 126
▸ deaktivieren (): Promise void
Deaktivieren Sie die Sprachpipeline. Wenn das Profil Wakeword enthält, kehrt die Pipeline zum Wakeword zurück. Wenn VAD aktiv ist, kann die Pipeline ohne Aufruf von Activate () reaktivieren.
example
import Spokestack from 'react-native-spokestack`
// ...
< Button title = "Stop listening" onClick = { ( ) => Spokestack . deactivate ( ) } /> Promise void
INDEX.TS: 142
▸ synthetisieren ( input , format? voice? ): Promise string
Synthese einen Text in Sprache zurückversprechend Promise<string> wobei die Zeichenfolge die URL für einen spielbaren MPEG ist.
Derzeit ist nur eine kostenlose Stimme verfügbar ("Demo-Männchen"). Die Stimme kann geändert werden, wenn Sie eine benutzerdefinierte Stimme mit einem Spokestack Maker -Konto erstellt haben. Siehe https://spokestack.io/pricing#maker.
example
const url = await Spokestack . synthesize ( 'Hello world' )
play ( url ) | Name | Typ |
|---|---|
input | string |
format? | [TTSFormat](#TTSFormat) |
voice? | string |
Promise string
Index.ts: 158
▸ Sprechen ( input , format? voice? ): Promise void
Synthese einen Text in Sprache und spiele das Audio sofort über das Standard -Audio -System. Die Handhabung der Audiositzung kann sehr komplex werden und wir empfehlen, eine RN -Bibliothek zu verwenden, die sich auf Audio konzentriert, um mehr als eine sehr einfache Wiedergabe zu erzielen.
Derzeit ist nur eine kostenlose Stimme verfügbar ("Demo-Männchen").
example
await Spokestack . speak ( 'Hello world' ) | Name | Typ |
|---|---|
input | string |
format? | [TTSFormat](#TTSFormat) |
voice? | string |
Promise void
Index.ts: 174
▸ Klassifizierung ( utterance ): Promise SpokestackNLUResult
Klassifizieren Sie die Äußerung mit dem Modell für das Verständnis für die natürliche Sprache in Absicht/Slot, das an spokestack.initialize () übergeben wurde. Weitere Informationen finden Sie unter https://www.spokestack.io/docs/concepts/nlu.
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 | Name | Typ |
|---|---|
utterance | string |
Promise SpokestackNLUResult
INDEX.TS: 190
▸ isInitialized (): Promise boolean
Gibt zurück, ob Spokestack initialisiert wurde
example
console . log ( `isInitialized: ${ await Spokestack . isInitialized ( ) } ` ) Promise boolean
Index.ts: 199
▸ isStarted (): Promise boolean
Gibt zurück, ob die Sprachpipeline gestartet wurde
example
console . log ( `isStarted: ${ await Spokestack . isStarted ( ) } ` ) Promise boolean
INDEX.TS: 208
▸ Isaktiviert (): Promise boolean
Gibt zurück, ob die Sprachpipeline derzeit aktiviert ist
example
console . log ( `isActivated: ${ await Spokestack . isActivated ( ) } ` ) Promise boolean
Index.ts: 217
• Vertrauen : number
Eine Zahl von 0 bis 1, die das Vertrauen des NLU -Modells in die von ihm erkannte Absicht darstellt, wobei 1 absolutes Vertrauen darstellt.
Typen.TS: 115
• Absicht : string
Die Absicht basiert auf der vom NLU -Modell bereitgestellten Übereinstimmung
Typen.TS: 113
• Slots : SpokestackNLUSlots
Daten, die mit der Absicht verbunden sind, bereitgestellt vom NLU -Modell
Typen.Ts: 117
▪ [Schlüssel: string ]: SpokestackNLUSlot
• RAWVALUE : string
Der ursprüngliche Stringwert des in der Benutzer Äußerung erkannten Steckplatzes
Typen.TS: 104
• Typ : string
Der Typ des Steckplatzes, wie in den Modellmetadaten definiert
Typen.TS: 100
• Wert : any
Der analysierte (typisierte) Wert des in der Benutzer Äußerung erkannten Steckplatzes
Typen.TS: 102
▸ AddEventListener ( eventType , listener , context? ): EmitterSubscription
Binden Sie an jedes Ereignis, das von den nativen Bibliotheken emittiert wird. Sehen Sie Ereignisse für eine Liste aller verfügbaren Ereignisse.
example
useEffect ( ( ) => {
const listener = Spokestack . addEventListener ( 'recognize' , onRecognize )
// Unsubsribe by calling remove when components are unmounted
return ( ) => {
listener . remove ( )
}
} , [ ] ) | Name | Typ | Beschreibung |
|---|---|---|
eventType | string | Name des Ereignisses, für das wir den Hörer registrieren |
listener | ( event : any ) => void | die Hörerfunktion |
context? | Object | Kontext des Zuhörers |
EmitterSubscription
Index.ts: 237
▸ REMEGEVENTLILILISTERER ( eventType , listener ): void
Entfernen Sie einen Event -Hörer
example
Spokestack . removeEventListener ( 'recognize' , onRecognize ) | Name | Typ | Beschreibung |
|---|---|---|
eventType | string | Name des Ereignisses zu emittieren |
listener | (... args : any []) => any | Funktionen aufzurufen, wenn das angegebene Ereignis emittiert wird |
void
Index.ts: 253
▸ removealllisteners (): void
Entfernen Sie alle vorhandenen Zuhörer
example
Spokestack . removeAllListeners ( ) void
INDEX.TS: 265
Bei der Verwendung von Spokestack -TTs werden drei Formate unterstützt. Rohtext, SSML und Sprachmarken. Siehe https://www.speechmarkdown.org/, wenn sie mit Sprachmarken nicht vertraut sind. IPA wird bei Verwendung von SSML oder Sprachmarken erwartet.
• redemarkdown = 2
Typen.Ts: 73
• SSML = 1
Typen.TS: 72
• text = 0
Typen.Ts: 71
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.
Dies sind die Konfigurationsoptionen, die an Spokestack.initialize(_, _, spokestackConfig) übergeben werden können. In SpokestackConfig sind keine Optionen erforderlich.
SpokestackConfig hat die folgende Struktur:
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
} Wie viel Protokollierung, um eine niedrigere Zahl anzuzeigen, bedeutet mehr Protokolle.
• debug = 10
Typen.TS: 58
• Info = 30
Typen.Ts: 60
• Keine = 100
Typen.Ts: 61
• perf = 20
Typen.Ts: 59
Pipeline -Profile richten die Sprachpipeline basierend auf Ihren Anforderungen ein
• ptt_native_asr = 2
Die automatische Spracherkennung von Apple/Android ist aktiviert, wenn die Sprachpipeline aktiv ist. Dies ist wahrscheinlich das häufigste Profil, wenn Wakeword nicht verwendet wird.
Typen.Ts: 24
• ptt_spokestack_asr = 5
Die automatische Spracherkennung von Spokestack ist auf dem Weg, wenn die Sprachpipeline aktiv ist. Dies ist wahrscheinlich das häufigste Profil, wenn Sie Wakeword nicht verwenden, aber Spokestack ASR wird bevorzugt.
Typen.Ts: 42
• TFLite_Wakeword_keyword = 6
VAD-sensitives Tflite Wake Word aktiviert das Tflite-Schlüsselworterkennungsmittel
Typen.TS: 46
• Tflite_Wakeword_Native_asr = 0
Richten Sie Wakeword ein und verwenden Sie den lokalen Apple/Android ASR. Beachten Sie, dass Wakeword.Filter, Wakeword.code und Wakeword.detekt erforderlich sind, wenn ein Wakeword -Profil verwendet wird.
Typen.TS: 12
• Tflite_Wakeword_Spokestack_asr = 3
Richten Sie Wakeword ein und verwenden Sie Remote Spokestack ASR. Beachten Sie, dass Wakeword.Filter, Wakeword.code und Wakeword.detekt erforderlich sind, wenn ein Wakeword -Profil verwendet wird.
Typen.ts: 30
• vad_keyword_asr = 7
VAD-ausgelöste TFLite-Schlüsselworterkenner
Typen.Ts: 50
• vad_native_asr = 1
Die automatische Spracherkennung von Apple/Android ist auf dem Weg, wenn die aktiven Erkennung der Sprache sie auslöst.
Typen.Ts: 17
• vad_spokestack_asr = 4
Die automatische Spracherkennung von Spokestack ist auf dem Weg, wenn die Aktivität der Sprache sie auslöst.
Typen.Ts: 35
• Optional AgccPressionGaindb : number
advanced
Nur Android für Akustikgaincontrol
Zielpeak -Audioebene in -db, um einen Peak von -9 dB aufrechtzuerhalten, einen Wert von 9 konfigurieren
Typen.Ts: 192
• Optional AgctargetlevelDBFs : number
advanced
Nur Android für Akustikgaincontrol
Dynamikbereichskompressionsrate in DBFs
Typen.Ts: 200
• Optional Anspolicy : "aggressive" | "very-aggressive" | "mild" | "medium"
advanced
Nur Android für Akustiknoisesuppressor
Lärmrichtlinie
Typen.Ts: 183
• Optional Pufferbreite : number
advanced
Pufferbreite, verwendet mit Framebreite, um die Puffergröße zu bestimmen
Typen.Ts: 155
• Optional Framebreite : number
advanced
Sprachrahmenbreite in MS
Typen.Ts: 149
• Optional Profil : PipelineProfile
Profile sind Sammlungen gemeinsamer Konfigurationen für Pipeline -Stufen.
Wenn kein Profil explizit festgelegt wird, bestimmt Spokestack ein vernünftiges Standardprofil basierend auf der an Spokestack.initialize() übergebenen Konfiguration:
Wenn Wakeword -Konfigurationsdateien festgelegt sind (und die Schlüsselwortkonfiguration nicht), wird die Standardeinstellung auf TFLITE_WAKEWORD_NATIVE_ASR gesetzt.
Wenn Keyword -Konfigurationsdateien festgelegt sind (und Wakeword -Konfiguration nicht), wird die Standardeinstellung auf VAD_KEYWORD_ASR gesetzt.
Wenn sowohl Wakeword- als auch Keyword -Konfigurationsdateien festgelegt sind, wird die Standardeinstellung auf TFLITE_WAKEWORD_KEYWORD gesetzt.
Andernfalls ist die Standardeinstellung PTT_NATIVE_ASR .
Typen.TS: 139
• Optional Probenplan : number
Audio -Stichprobenrate in HZ
Typen.TS: 143
• Optional VADFAGDELAY : number
advanced
Fallrandlänge in MS; Dieser Wert bestimmt, wie viele negative Proben empfangen werden müssen, um den Detektor auf negativ zu machen
Typen.TS: 166
• Optional VadMode : "quality" | "low-bitrate" | "aggressive" | "very-aggressive"
Sprachaktivitätsdetektormodus
Typen.TS: 159
• Optional Vadrisedelay : number
advanced
Nur Android
Erkennungslauflänge in MS; Dieser Wert bestimmt, wie viele positive Proben empfangen werden müssen, um den Detektor auf positiv umzudrehen
Typen.Ts: 175
• Metadaten : string | number
Die JSON -Datei für NLU -Metadaten. Wenn angegeben, sind auch Modell und Vokabschnitt erforderlich.
Dieses Feld akzeptiert 2 Arten von Werten.
require oder import abgerufen wurde (z. B. metadata: require('./metadata.sjson') ). Wichtig: Eine spezielle Erweiterung wird für lokale Metadaten -JSON import ( .sjson ) verwendet, wenn die Datei nicht eingeschlossen require sondern stattdessen als Quellobjekt importiert wird. Dies macht es so, dass die Datei stattdessen von den zugrunde liegenden nativen Bibliotheken gelesen und analysiert wird.
Typen.Ts: 223
• Modell : string | number
Das NLU TensorFlow-Lite-Modell. Wenn angegeben, sind auch Metadaten und Vokabeln erforderlich.
Dieses Feld akzeptiert 2 Arten von Werten.
require oder import abgerufen wurde (z. B. model: require('./nlu.tflite') )) Typen.Ts: 211
• VOCAB : string | number
Eine TXT -Datei, die das NLU -Vokabular enthält. Wenn angegeben, sind auch Modell und Metadaten erforderlich.
Dieses Feld akzeptiert 2 Arten von Werten.
require oder import abgerufen wurde (z. B. vocab: require('./vocab.txt') )) Typen.Ts: 231
• Optional Eingabelänge : number
Typen.TS: 244
• Erkennen : string | number
Das "Erfassungs" -Tensorflow-Lite-Modell. Wenn angegeben, sind auch Filter und Enkodus erforderlich.
Dieses Feld akzeptiert 2 Arten von Werten.
require oder import abgerufen wurde (z. B. detect: require('./detect.tflite') ))Das Encode -Modell wird verwendet, um jeden autoregressiven Schritt über die MEL -Rahmen durchzuführen. Seine Eingänge sollten [Mel-Length, Mel-Width] und seine Ausgänge [codieren Breite] mit einem zusätzlichen Zustand Eingang/Ausgangsgeformt [State-Width] sein.
Typen.Ts: 272
• Enkodus : string | number
Das TensorFlow-Lite-Modell "codieren". Wenn angegeben, sind auch Filter und Erkennung erforderlich.
Dieses Feld akzeptiert 2 Arten von Werten.
require oder import abgerufen wurde (z. B. encode: require('./encode.tflite') ))Seine Eingänge sollten geformt werden [codieren Länge, codieren Breite] und seine Ausgänge
Typen.Ts: 283
• Filter : string | number
Das "Filter" TensorFlow-Lite-Modell. Wenn angegeben, sind auch Erfassungen und Encodes erforderlich.
Dieses Feld akzeptiert 2 Arten von Werten.
require oder import abgerufener Quellenobjekt (z. B. filter: require('./filter.tflite') ))Das Filtermodell wird verwendet, um einen Mel -Spektrogramm -Rahmen aus der linearen STFT zu berechnen. Seine Eingänge sollten geformt werden [FFT-Width] und seine Ausgänge [Mel-Width]
Typen.TS: 260
• Optional Aktivität : number
advanced
Die maximale Länge einer Aktivierung in Millisekunden wurde verwendet, um die Aktivierung abzustimmen
Typen.TS: 373
• Optional Aktivität : number
advanced
Die Mindestlänge einer Aktivierung in Millisekunden ignoriert eine VAD -Deaktivierung nach dem Wakeword
Typen.Ts: 366
• Optional RequestTimeout : number
iOS nur
Zeitdauer, um eine Apple -ASR -Anfrage in Millisekunden auszuführen. Apple hat eine undokumentierte Grenze von 60000 ms pro Anfrage.
Typen.TS: 380
• Optional RMSALPHA : number
advanced Android-Nur
Die exponentiell gewichtete Aktualisierungsrate (EWMA) für die aktuelle RMS-Signalenergie (0 für keine RMS-Normalisierung)
Typen.TS: 397
• Optional rmstarget : number
advanced Android-Nur
Die gewünschte lineare Wurzel -Mittelwert -Signal -Signalenergie (RMS), die zur Signalnormalisierung verwendet wird und auf das RMS -Ziel abgestimmt werden sollte
Typen.TS: 389
• Optional Wakewords : string | string []
iOS nur
Ein geordnetes Array- oder Comma-getrennter Liste von Wakeword-Schlüsselwörtern ist nur erforderlich, wenn Sie nicht den Filter, Erkennungs- und Codieren von Pfaden übergeben.
Typen.TS: 404
• Erkennen : string | number
Das "Erfassungs" -Tensorflow-Lite-Modell. Wenn angegeben, sind auch Filter und Enkodus erforderlich.
Dieses Feld akzeptiert 2 Arten von Werten.
require oder import abgerufen wurde (z. B. detect: require('./detect.tflite') ))Das Encode -Modell wird verwendet, um jeden autoregressiven Schritt über die MEL -Rahmen durchzuführen. Seine Eingänge sollten [Mel-Length, Mel-Width] und seine Ausgänge [codieren Breite] mit einem zusätzlichen Zustand Eingang/Ausgangsgeformt [State-Width] sein.
Typen.Ts: 272
• Enkodus : string | number
Das TensorFlow-Lite-Modell "codieren". Wenn angegeben, sind auch Filter und Erkennung erforderlich.
Dieses Feld akzeptiert 2 Arten von Werten.
require oder import abgerufen wurde (z. B. encode: require('./encode.tflite') ))Seine Eingänge sollten geformt werden [codieren Länge, codieren Breite] und seine Ausgänge
Typen.Ts: 283
• Filter : string | number
Das "Filter" TensorFlow-Lite-Modell. Wenn angegeben, sind auch Erfassungen und Encodes erforderlich.
Dieses Feld akzeptiert 2 Arten von Werten.
require oder import abgerufener Quellenobjekt (z. B. filter: require('./filter.tflite') ))Das Filtermodell wird verwendet, um einen Mel -Spektrogramm -Rahmen aus der linearen STFT zu berechnen. Seine Eingänge sollten geformt werden [FFT-Width] und seine Ausgänge [Mel-Width]
Typen.TS: 260
Entweder sind metadata oder classes erforderlich, und sie schließen sich gegenseitig aus.
• Metadaten : string | number
Die JSON -Datei für Keyword -Metadaten. Erforderlich, wenn keyword.classes nicht angegeben ist.
Dieses Feld akzeptiert 2 Arten von Werten.
require oder import abgerufen wurde (z. B. metadata: require('./metadata.sjson') ). Wichtig: Eine spezielle Erweiterung wird für lokale Metadaten -JSON import ( .sjson ) verwendet, wenn die Datei nicht eingeschlossen require sondern stattdessen als Quellobjekt importiert wird. Dies macht es so, dass die Datei stattdessen von den zugrunde liegenden nativen Bibliotheken gelesen und analysiert wird.
Typen.TS: 424
• Klassen : string | string []
Eine von Kommas getrennte Liste oder ein bestelltes Array von Klassennamen für die Schlüsselwörter. Der Name, der der wahrscheinlichsten Klasse entspricht, wird im Feld Transkript zurückgegeben, wenn das Erkennungsereignis erhöht wird. Erforderlich, wenn keyword.metadata nicht angegeben ist.
Typen.TS: 434
Diese Eigenschaften können entweder an das wakeword oder keyword -Konfigurationsobjekt übergeben werden, werden jedoch nicht gemeinsam genutzt.
• Optional EncodeLength : number
advanced
Die Länge des Schiebefensters des Encoder -Ausgangs, der als Eingang zum Klassifikator verwendet wird, in Millisekunden
Typen.TS: 293
• Optional CODEWIDTH : number
advanced
Die Größe des Encoderausgangs in Vektoreinheiten
Typen.TS: 299
• Optional ffthoplength : number
advanced
Die Zeitdauer, um jedes Mal zu überspringen, wenn die überlappende STFT in Millisekunden berechnet wird
Typen.TS: 322
• Optional fftWindowSize : number
advanced
Die Größe des Signalfensters zur Berechnung der STFT in Anzahl der Proben sollte eine Leistung von 2 für maximale Effizienz sein
Typen.Ts: 306
• Optional fftwindowtype : string
advanced
Nur Android
Der Name der Fensterfunktion, die vor Berechnung des STFT auf jeden Audio -Rahmen angewendet werden soll; Derzeit wird das Fenster "Hann" unterstützt
Typen.Ts: 315
• Optional melfRamelength : number
advanced
Die Zeitdauer, um jedes Mal zu überspringen, wenn die überlappende STFT in Millisekunden berechnet wird
Typen.TS: 329
• Optional MelframeWidth : number
advanced
Die Größe jedes MEL -Spektrogrammrahmens in Anzahl der Filterbankkomponenten
Typen.TS: 336
• Optional Vorbeeinflussung : number
advanced
Das voraberbietende Filtergewicht für das normalisierte Audiosignal angewendet (0 für keine Vormachung)
Typen.TS: 343
• Optional Staatsbreite : number
advanced
Die Größe des Encoder-Zustands in Vektoreinheiten (Standardeinstellungen für Wake-Codes-Widths)
Typen.Ts: 349
• Optional Schwelle : number
advanced
Der Schwellenwert des hinteren Ausgangs des Klassifikators, über dem der Trigger die Pipeline im Bereich aktiviert [0, 1]
Typen.TS: 356
Apache-2.0
Copyright 2021 Spokestack