
React本地插件使用Spokestack添加語音。這包括語音識別,喚醒和自然語言理解,以及使用Spokestack聲音將文本綜合為語音。
使用NPM:
npm install --save react-native-spokestack或使用紗線:
yarn add react-native-spokestack然後按照每個平台的說明將React-Native-Spokestack鏈接到您的項目:
首先,打開XCode並轉到項目 - >信息以將iOS部署目標設置為13.0或更高。
另外,將部署設置為目標 - >一般 - >部署信息下的13.0。
當引入Flipper進行反應本地時,設置了一些庫搜索路徑以供Swift。 React Native Project中的默認搜索路徑存在很長的問題,因為Swift 5.0添加了搜索路徑,該搜索路徑阻止了僅在Swift 5.2或更高版本中使用API的任何其他React本機庫。 spokestack-ios,反應本地spokestack的依賴性使用這些API和Xcode將無法構建。
幸運的是,修復程序非常簡單。轉到您的目標 - >構建設置並蒐索“庫搜索路徑”。
從列表中刪除""$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)"" 。
在運行pod install之前,請確保進行以下編輯。
React-Native-Spokestack使用僅在iOS 13+中可用的相對較新的API。將部署目標設置為iOS 13的頂部:
platform :ios , '13.0'我們還需要使用use_frameworks!在我們的podfile中,以支持用迅速編寫的依賴項。
target 'SpokestackExample' do
use_frameworks!
#...目前, use_frameworks!不與Flipper一起使用,因此我們還需要禁用Flipper。卸下豆莢纖維中的任何與腳鉗相關的線條。在React Native 0.63.2+中,它們看起來像這樣:
# 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使用use_frameworks!在他們的豆莢裡。
有關此錯誤的更多信息,請參見Facebook/React-Native#31149。
要解決此問題,請將以下內容添加到您的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 刪除您現有的podfile.lock和pods文件夾,以確保沒有衝突,然後安裝吊艙:
$ npx pod-install將以下內容添加到您的info.plist中以啟用權限。
< 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 >弗里普(Flipper)致力於修復其pod for use_frameworks! ,我們必須禁用腳鉗。我們已經從上面的豆莢中刪除了腳依依賴,但是在appdelegate.m中仍然有一些代碼導入flipper。有兩種解決此問題的方法。
-DFB_SONARKIT_ENABLED=1 。在我們的示例應用程序中,我們完成了選項1,並保留在Flipper代碼中,以便將來使其在將來工作,並且可以添加回去。
# import < AVFoundation/AVFoundation.h > 設置AudioSession類別。有幾種可行的配置。
以下是適合大多數用例的建議:
- ( 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 ];
// ... 該示例使用使用系統提供的ASRS( AndroidSpeechRecognizer和AppleSpeechRecognizer )。但是,100%的設備無法使用AndroidSpeechRecognizer 。如果您的應用程序支持沒有內置語音識別的設備,請使用配置文件道具將配置profile設置為Spokestack配置文件,以使用profile ASR。
有關更多信息,請參見我們的ASR文檔。
// ...
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 " )將必要的權限添加到您的AndroidManifest.xml 。第一個權限通常已經存在。使用麥克風需要第二個。
<!-- 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 " />Record_audio的權限很特別,因為它必須在AndroidManifest.xml中列出,並在運行時要求。有幾種方法可以處理此操作(React-Native-Spokestack並不為您做到這一點):
雖然iOS將自動啟動權限對話框,但您必須在Android中手動執行此操作。
React Native已經為此提供了一個模塊。有關更多信息,請參見React React Native的Persissimensionsandroid。
開始使用Spokestack,或在ASR,NLU和TTS上查看我們的深入教程。另外,請務必查看食譜以解決常見問題的快速解決方案。
example/文件夾中包含一個工作示例應用程序。
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 >
)
} 要在您的應用中將模型文件包括在本地(而不是從CDN下載),您還需要添加必要的擴展名,以便Babel可以包含這些文件。為此,請編輯您的metro.config.js 。
const defaults = require ( 'metro-config/src/defaults/defaults' )
module . exports = {
resolver : {
assetExts : defaults . assetExts . concat ( [ 'tflite' , 'txt' , 'sjson' ] )
}
}然後使用源對象包括模型文件:
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' )
}
} )這不是必需的。將遠程URL傳遞到相同的配置選項,並且首次調用initialize時將下載和緩存文件。
請參閱了解如何為存儲庫和開發工作流程貢獻的貢獻指南。
▸初始化( clientId , clientSecret , config? ): Promise void
初始化語音管道;所有其他方法都需要。
前2個ARGS是您的Spokestack憑據免費提供的https://spokestack.io。避免在您的應用中進行硬編碼。有幾種方法可以在代碼中包含環境變量。
使用process.env:https://babeljs.io/docs/en/babel-plugin-transform-inline-enline-envorirnment-variables/
使用git忽略的本地.env文件:https://github.com/goatandsheep/react-native-dotenv https://github.com/luggit/react-native-config
有關所有可用選項,請參見SpokestackConfig。
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
}
} ) | 姓名 | 類型 |
|---|---|
clientId | string |
clientSecret | string |
config? | [SpokestackConfig](#SpokestackConfig) |
Promise void
index.ts:64
▸銷毀(): Promise void
破壞語音管道,刪除所有聽眾,並釋放所有資源。這可以在重新定位管道之前調用。一個打電話的好地方是在componentWillUnmount中。
example
componentWillUnmount ( ) {
Spokestack . destroy ( )
} Promise void
index.ts:81
▸start (): Promise void
開始語音管道。語音管道從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
▸停止(): Promise void
停止語音管道。這有效地停止了ASR,VAD和WAVEWORD。
example
import Spokestack from 'react-native-spokestack`
// ...
await Spokestack . stop ( ) Promise void
index.ts:110
▸激活(): Promise void
手動激活語音管道。使用PTT配置文件時,這是必要的。 VAD配置文件也可以激活ASR,而無需調用此方法。
example
import Spokestack from 'react-native-spokestack`
// ...
< Button title = "Listen" onClick = { ( ) => Spokestack . activate ( ) } /> Promise void
index.ts:126
▸停用(): Promise void
停用語音管道。如果配置文件包含WakeWord,則管道將返回聆聽whookword。如果VAD處於活動狀態,則管道可以在不調用激活()的情況下重新激活。
example
import Spokestack from 'react-native-spokestack`
// ...
< Button title = "Stop listening" onClick = { ( ) => Spokestack . deactivate ( ) } /> Promise void
index.ts:142
▸綜合( input , format? , voice? ): Promise string
將一些文本綜合為語音返回Promise<string> ,字符串是可播放MPEG的URL。
目前只有一個免費的聲音可用(“演示 - 男性”)。如果您使用Spokestack Maker帳戶創建了自定義語音,則可以更改語音。請參閱https://spokestack.io/pricing#maker。
example
const url = await Spokestack . synthesize ( 'Hello world' )
play ( url ) | 姓名 | 類型 |
|---|---|
input | string |
format? | [TTSFormat](#TTSFormat) |
voice? | string |
Promise < string >
index.ts:158
▸說話( input , format? , voice? ): Promise void
將一些文本綜合為語音,然後立即通過默認音頻系統播放音頻。音頻會話的處理可能會變得非常複雜,我們建議使用專注於音頻的RN庫,而不是非常簡單的播放。
目前只有一個免費的聲音可用(“演示 - 男性”)。
example
await Spokestack . speak ( 'Hello world' ) | 姓名 | 類型 |
|---|---|
input | string |
format? | [TTSFormat](#TTSFormat) |
voice? | string |
Promise void
index.ts:174
▸分類( utterance ): Promise SpokestackNLUResult
使用意圖/插槽自然語言理解模型將話語分類為spokestack.initialize()。有關更多信息,請參見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 | 姓名 | 類型 |
|---|---|
utterance | string |
Promise SpokestackNLUResult
index.ts:190
▸isInitialized (): Promise boolean
返回Spokestack是否已初始化
example
console . log ( `isInitialized: ${ await Spokestack . isInitialized ( ) } ` ) Promise boolean
index.ts:199
▸iSstarted (): Promise boolean
返回語音管道是否已經開始
example
console . log ( `isStarted: ${ await Spokestack . isStarted ( ) } ` ) Promise boolean
index.ts:208
▸ISActivated (): Promise boolean
返回語音管道當前是否已激活
example
console . log ( `isActivated: ${ await Spokestack . isActivated ( ) } ` ) Promise boolean
index.ts:217
•信心: number
從0到1代表NLU模型對其意圖的置信度的數字,其中1代表絕對置信度。
types.ts:115
•意圖: string
基於NLU模型提供的匹配的意圖
types.ts:113
•插槽: SpokestackNLUSlots
與意圖相關的數據,由NLU模型提供
types.ts:117
▪[鍵: string ]: SpokestackNLUSlot
• RAWVALUE : string
用戶話語中識別的插槽的原始字符串值
types.ts:104
•類型: string
插槽的類型,如模型元數據所定義
types.ts:100
•價值: any
用戶話語中識別的插槽的解析(鍵入)值
types.ts:102
▸addeventListener ( eventType , listener , context? ): EmitterSubscription
綁定到本機庫發出的任何事件,請參見所有可用事件列表的事件。
example
useEffect ( ( ) => {
const listener = Spokestack . addEventListener ( 'recognize' , onRecognize )
// Unsubsribe by calling remove when components are unmounted
return ( ) => {
listener . remove ( )
}
} , [ ] ) | 姓名 | 類型 | 描述 |
|---|---|---|
eventType | string | 我們註冊聽眾的活動的名稱 |
listener | ( event : any )=> void | 偵聽器功能 |
context? | Object | 聽眾的背景 |
EmitterSubscription
index.ts:237
▸emoveEventListener ( eventType , listener ): void
刪除活動聽眾
example
Spokestack . removeEventListener ( 'recognize' , onRecognize ) | 姓名 | 類型 | 描述 |
|---|---|---|
eventType | string | 活動的名稱發射 |
listener | (... args : any [])= any | 發出指定事件時要調用的功能 |
void
index.ts:253
▸removeAlllisteners (): void
刪除任何現有的聽眾
example
Spokestack . removeAllListeners ( ) void
index.ts:265
使用Spokestack TTS時,支持三種格式。原始文本,SSML和語音標記。請參閱https://www.speechmarkdown.org/如果不熟悉語音宣傳。使用SSML或語音標記時,預計IPA。
• SpeechmarkDown = 2
types.ts:73
• SSML = 1
types.ts:72
•文字= 0
types.ts:71
使用addEventListener() , removeEventListener()和removeAllListeners()添加和刪除事件處理程序。 iOS和Android都可以使用所有事件。
| 姓名 | 數據 | 描述 |
|---|---|---|
| 認出 | { transcript: string } | 每當能夠成功完成語音識別時,就被解僱。 |
| partial_recognize | { transcript: string } | 每當筆錄在語音識別過程中變化時被解僱。 |
| 開始 | null | 當語音管道開始時被解僱(開始聆聽WakeWord或啟動VAD)。 |
| 停止 | null | 當語音管道停止時被解僱。 |
| 啟用設定 | null | 當語音管道通過VAD,WakeWord或調用.activate()激活時,被解僱。 |
| 停用 | null | 當語音管道停用時被解僱。 |
| 玩 | { playing: boolean } | 當TTS播放啟動和停止時被解僱。請參閱speak()函數。 |
| 暫停 | null | 由於缺乏識別,當主動管道時間熄滅時被解僱。 |
| 痕跡 | { message: string } | 發射跟踪消息。冗長由traceLevel選項確定。 |
| 錯誤 | { error: string } | 當Spokestack發生錯誤時被解僱。 |
當觸發錯誤事件時,任何現有承諾將被拒絕。
這些是可以傳遞給Spokestack.initialize(_, _, spokestackConfig)的配置選項。 SpokestackConfig中無需選項。
SpokestackConfig具有以下結構:
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
} 顯示較低數字的日誌記錄數量意味著更多的日誌。
•調試= 10
types.ts:58
•信息= 30
types.ts:60
•無= 100
types.ts:61
• perf = 20
types.ts:59
管道配置文件根據您的需求設置了語音管道
• ptt_native_asr = 2
當語音管道處於活動狀態時,Apple/Android自動語音識別即將開始。當不使用WakeWord時,這可能是更常見的配置文件。
types.ts:24
• ptt_spokestack_asr = 5
當語音管道處於活動狀態時,Spokestack自動語音識別即將出現。當不使用WakeWord時,這可能是更常見的配置文件,但是Spokestack ASR是首選的。
types.ts:42
• tflite_wakeword_keyword = 6
VAD敏感的tflite喚醒詞激活tflite關鍵字識別器
types.ts:46
• tflite_wakeword_native_asr = 0
設置Wakeword並使用本地Apple/Android ASR。請注意,如果使用任何WakeWord配置文件,則需要WakeWord.Filter,Wakeword.encode和Wakeword.DeTect。
types.ts:12
• tflite_wakeword_spokestack_asr = 3
設置Wakeword並使用遠程Spokestack ASR。請注意,如果使用任何WakeWord配置文件,則需要WakeWord.Filter,Wakeword.encode和Wakeword.DeTect。
types.ts:30
• vad_keyword_asr = 7
VAD觸發的Tflite關鍵字識別器
types.ts:50
• vad_native_asr = 1
當語音主動檢測觸發它時,Apple/Android自動語音識別正在啟用。
types.ts:17
• vad_spokestack_asr = 4
Spokestack自動語音識別正在觸發聲音觸發時。
types.ts:35
• Optional agcompressiongaindb : number
advanced
僅適用於Android ocousticgainConcontrol
目標峰值音頻級別,以-db為in -db,以保持-9dB的峰值,配置一個9
types.ts:192
• Optional agctargetleveldbfs : number
advanced
僅適用於Android ocousticgainConcontrol
DBF中的動態範圍壓縮率
types.ts:200
• Optional彈頭: "aggressive" | "very-aggressive" | "mild" | "medium"
advanced
僅適用於Android的聲音抑制器
噪聲政策
types.ts:183
• Optional bufferwidth : number
advanced
緩衝寬度,與框架寬度一起確定緩衝尺寸
types.ts:155
• Optional框架: number
advanced
語音框架寬度,在MS中
types.ts:149
• Optional配置文件: PipelineProfile
配置文件是管道階段的常見配置集合。
如果未明確設置配置文件,則Spokestack根據傳遞給Spokestack.initialize()配置確定明智的默認配置文件:
如果設置了Wakeword配置文件(未關鍵字配置),則將默認設置為TFLITE_WAKEWORD_NATIVE_ASR 。
如果設置了關鍵字配置文件(並且不是WakeWord Config),則默認值將設置為VAD_KEYWORD_ASR 。
如果設置了WakeWord和關鍵字配置文件,則將默認設置為TFLITE_WAKEWORD_KEYWORD 。
否則,默認值為PTT_NATIVE_ASR 。
types.ts:139
• Optional採樣: number
音頻採樣率,Hz
types.ts:143
• Optional VadfallDelay : number
advanced
在MS中,降邊的檢測長度;此值確定必須收到多少個負樣本才能將檢測器翻轉為負
types.ts:166
• Optional VADMODE : "quality" | "low-bitrate" | "aggressive" | "very-aggressive"
語音活動探測器模式
types.ts:159
• Optional vadrisedelay : number
advanced
僅Android
MS中的上升邊緣檢測長度;該值確定必須收到多少個正樣本才能將檢測器翻轉為正
types.ts:175
•元數據: string | number
NLU元數據的JSON文件。如果指定,也需要模型和詞彙。
該字段接受兩種值類型。
require或import的源對象(例如metadata: require('./metadata.sjson') )。重要的是:當使用或導入require或import時,用於本地元數據JSON文件( .sjson )的特殊擴展名,以便在包含時不會解析該文件,而是將其作為源對象導入。這使得該文件是由基礎本機庫讀取和解析的。
types.ts:223
•型號: string | number
NLU TensorFlow-Lite模型。如果指定,也需要元數據和詞彙。
該字段接受兩種值類型。
require或import的源對象(例如model: require('./nlu.tflite') ) types.ts:211
•詞彙: string | number
包含NLU詞彙的TXT文件。如果指定,也需要模型和元數據。
該字段接受兩種值類型。
require或import檢索的源對象(例如vocab: require('./vocab.txt') ) types.ts:231
• Optional輸入長度: number
types.ts:244
•檢測: string | number
“檢測” TensorFlow-Lite模型。如果指定,也需要過濾和編碼。
該字段接受兩種值類型。
require或import檢索的源對象(例如detect: require('./detect.tflite') )編碼模型用於在MEL框架上執行每個自回歸步驟;它的輸入應形成[Mel-Length,Mel寬度]及其輸出[Encode-Width],並具有附加的狀態輸入/輸出形狀[州寬度]
types.ts:272
•編碼: string | number
“編碼” TensorFlow-Lite模型。如果指定,也需要過濾和檢測。
該字段接受兩種值類型。
require或import的源對象(例如encode: require('./encode.tflite') )它的輸入應形成[編碼長度,encode寬度],並將其輸出
types.ts:283
•過濾器: string | number
“濾波器” TensorFlow-Lite模型。如果指定,也需要檢測和編碼。
該字段接受兩種值類型。
require或import的源對象(例如filter: require('./filter.tflite') )濾波器模型用於從線性STFT計算MEL頻譜圖;它的輸入應形成[FFT寬度],其輸出[MEL WIDTH]
types.ts:260
• Optional ActiveMax : number
advanced
激活的最大長度,以毫秒為單位,用於超時激活
types.ts:373
• Optional激活素: number
advanced
激活的最小長度,以毫秒為單位,用於忽略Wakeword後的VAD停用
types.ts:366
• Optional請求時間: number
僅ios
允許Apple ASR請求運行的時間長度,以毫秒為單位。蘋果的無證限額為60000ms。
types.ts:380
• Optional rmsalpha : number
advanced僅Android
當前RMS信號能量的指數加權移動平均值(EWMA)更新速率(無RMS標準化為0)
types.ts:397
• Optional rmstarget : number
advanced僅Android
所需的線性均方根(RMS)信號能,用於信號歸一化,應調整為訓練期間使用的RMS目標
types.ts:389
• Optional喚醒字: string | string []
僅ios
只有在不傳遞過濾器,檢測和編碼路徑時,需要有序的數組或逗號分隔的Wakeword關鍵字列表。
types.ts:404
•檢測: string | number
“檢測” TensorFlow-Lite模型。如果指定,也需要過濾和編碼。
該字段接受兩種值類型。
require或import檢索的源對象(例如detect: require('./detect.tflite') )編碼模型用於在MEL框架上執行每個自回歸步驟;它的輸入應形成[Mel-Length,Mel寬度]及其輸出[Encode-Width],並具有附加的狀態輸入/輸出形狀[州寬度]
types.ts:272
•編碼: string | number
“編碼” TensorFlow-Lite模型。如果指定,也需要過濾和檢測。
該字段接受兩種值類型。
require或import的源對象(例如encode: require('./encode.tflite') )它的輸入應形成[編碼長度,encode寬度],並將其輸出
types.ts:283
•過濾器: string | number
“濾波器” TensorFlow-Lite模型。如果指定,也需要檢測和編碼。
該字段接受兩種值類型。
require或import的源對象(例如filter: require('./filter.tflite') )濾波器模型用於從線性STFT計算MEL頻譜圖;它的輸入應形成[FFT寬度],其輸出[MEL WIDTH]
types.ts:260
需要metadata或classes ,它們是相互排斥的。
•元數據: string | number
關鍵字元數據的JSON文件。如果未指定keyword.classes 。
該字段接受兩種值類型。
require或import的源對象(例如metadata: require('./metadata.sjson') )。重要的是:當使用或導入require或import時,用於本地元數據JSON文件( .sjson )的特殊擴展名,以便在包含時不會解析該文件,而是將其作為源對象導入。這使得該文件是由基礎本機庫讀取和解析的。
types.ts:424
•類: string | string []
逗號分隔的列表或關鍵字的班級名稱陣列。當識別事件提出時,與最可能類相對應的名稱將在成績單字段中返回。如果未指定keyword.metadata 。
types.ts:434
這些屬性可以將其傳遞給wakeword或keyword配置對象,但未共享。
• Optional編碼: number
advanced
用作分類器的輸入的編碼器輸出的滑動窗口的長度,以毫秒為單位
types.ts:293
• Optional編碼: number
advanced
編碼器輸出的大小,在向量單元中
types.ts:299
• Optional ffthoplength : number
advanced
每次計算重疊的STFT時跳過的時間長度,以毫秒為單位
types.ts:322
• Optional fftwindowsize : number
advanced
用於計算STFT的信號窗口的大小,樣品數量 - 應為2的功率,以達到最大效率
types.ts:306
• Optional fftWindowType : string
advanced
僅Android
在計算STFT之前,將窗口功能的名稱應用於每個音頻框架;目前支持“ Hann”窗口
types.ts:315
• Optional MelframeLength : number
advanced
每次計算重疊的STFT時跳過的時間長度,以毫秒為單位
types.ts:329
• Optional MelframeWidth : number
advanced
每個MEL頻譜圖的大小,濾紙組件的數量
types.ts:336
• Optional重點: number
advanced
重點濾波器的重量適用於標準化音頻信號(0,無重音)
types.ts:343
• Optional州寬: number
advanced
編碼器狀態的大小,在向量單元中(默認為喚醒字段寬度)
types.ts:349
• Optional閾值: number
advanced
分類器後輸出的閾值在上面激活管道,範圍內[0,1]
types.ts:356
Apache-2.0
版權2021 Spokestack