
Bereaksi plugin asli untuk menambahkan suara menggunakan spokeStack. Ini termasuk pengenalan ucapan, kata kunci, dan pemahaman bahasa alami, serta mensintesis teks untuk berbicara menggunakan suara spokestack.
Menggunakan NPM:
npm install --save react-native-spokestackatau menggunakan benang:
yarn add react-native-spokestackKemudian ikuti instruksi untuk setiap platform untuk menautkan react-native-spokestack ke proyek Anda:
Pertama, buka Xcode dan buka Project -> Info untuk mengatur target penempatan iOS ke 13.0 atau lebih tinggi.
Juga, atur penyebaran ke 13.0 di bawah Target -> General -> Info Penyebaran.
Ketika Flipper diperkenalkan untuk bereaksi asli, beberapa jalur pencarian perpustakaan ditetapkan untuk Swift. Telah ada masalah lama dengan jalur pencarian default dalam proyek -proyek React Native karena jalur pencarian ditambahkan untuk Swift 5.0 yang mencegah perpustakaan asli React lainnya menggunakan API yang hanya tersedia di Swift 5.2 atau lebih baru. SpokeStack-IOS, ketergantungan react-native-spokeStack memanfaatkan API ini dan XCODE akan gagal membangun.
Untungnya, perbaikannya cukup sederhana. Buka target Anda -> Bangun Pengaturan dan cari "jalur pencarian perpustakaan".
Hapus ""$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)"" dari daftar.
Sebelum menjalankan pod install , pastikan untuk melakukan pengeditan berikut.
React-native-spokeStack memanfaatkan API yang relatif baru hanya tersedia di iOS 13+. Atur target penempatan ke iOS 13 di bagian atas podfile Anda:
platform :ios , '13.0' Kita juga perlu menggunakan use_frameworks! di podfile kami untuk mendukung dependensi yang ditulis dalam Swift.
target 'SpokestackExample' do
use_frameworks!
#... Untuk saat ini, use_frameworks! Tidak bekerja dengan Flipper, jadi kita juga perlu menonaktifkan Flipper. Lepaskan semua saluran terkait sirip di podfile Anda. Di React Native 0.63.2+, mereka terlihat seperti ini:
# 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 merusak proyek apa pun menggunakan use_frameworks! di podfile mereka.
Untuk info lebih lanjut tentang bug ini, lihat Facebook/React-Native#31149.
Untuk mengatasi masalah ini, tambahkan yang berikut ini ke podfile Anda:
# 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 Hapus podfile Anda yang ada. Folder Lokir dan Pod untuk memastikan tidak ada konflik, lalu pasang pod:
$ npx pod-installTambahkan yang berikut ke info Anda. Plist untuk mengaktifkan izin.
< 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 > Sementara Flipper bekerja untuk memperbaiki pod mereka untuk use_frameworks! , kita harus menonaktifkan Flipper. Kami sudah menghapus dependensi sirip dari polong di atas, tetapi masih ada beberapa kode di appdelegate.m yang mengimpor sirip. Ada dua cara untuk memperbaikinya.
-DFB_SONARKIT_ENABLED=1 dari bendera.Dalam aplikasi contoh kami, kami telah melakukan Opsi 1 dan pergi dalam kode sirip jika mereka membuatnya berfungsi di masa depan dan kami dapat menambahkannya kembali.
# import < AVFoundation/AVFoundation.h > Atur kategori audiosesi. Ada beberapa konfigurasi yang berfungsi.
Berikut ini adalah saran yang harus sesuai dengan sebagian besar kasus penggunaan:
- ( 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 ];
// ... Contoh penggunaan menggunakan ASR yang disediakan sistem ( AndroidSpeechRecognizer dan AppleSpeechRecognizer ). Namun, AndroidSpeechRecognizer tidak tersedia pada 100% perangkat. Jika aplikasi Anda mendukung perangkat yang tidak memiliki pengenalan ucapan bawaan, gunakan SpokeStack ASR sebagai gantinya dengan mengatur profile ke profil spokestack menggunakan prop profile .
Lihat dokumentasi ASR kami untuk informasi lebih lanjut.
// ...
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 " ) Tambahkan izin yang diperlukan ke AndroidManifest.xml Anda. Izin pertama sering sudah ada. Yang kedua diperlukan untuk menggunakan mikrofon.
<!-- 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 " /> Izin Record_Audio khusus karena keduanya harus terdaftar di AndroidManifest.xml serta diminta saat runtime. Ada beberapa cara untuk menangani ini (react-native-spokestack tidak melakukan ini untuk Anda):
Sementara iOS akan memunculkan dialog izin secara otomatis untuk segala izin yang diperlukan, Anda harus melakukan ini secara manual di Android.
React Native sudah menyediakan modul untuk ini. Lihat React Native's izinAndroid untuk info lebih lanjut.
Mulailah menggunakan SpokeStack, atau lihat tutorial mendalam kami di ASR, NLU, dan TTS. Pastikan juga untuk melihat buku masak untuk solusi cepat untuk masalah umum.
Aplikasi contoh yang berfungsi termasuk dalam repo ini dalam example/ folder.
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 >
)
} Untuk memasukkan file model secara lokal di aplikasi Anda (daripada mengunduhnya dari CDN), Anda juga perlu menambahkan ekstensi yang diperlukan sehingga file dapat dimasukkan oleh Babel. Untuk melakukan ini, edit metro.config.js Anda.
const defaults = require ( 'metro-config/src/defaults/defaults' )
module . exports = {
resolver : {
assetExts : defaults . assetExts . concat ( [ 'tflite' , 'txt' , 'sjson' ] )
}
}Kemudian sertakan file model menggunakan objek sumber:
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' )
}
} ) Ini tidak diperlukan. Lewati URL jarak jauh ke opsi konfigurasi yang sama dan file akan diunduh dan di -cache saat pertama kali memanggil initialize .
Lihat Panduan Kontribusi untuk mempelajari cara berkontribusi pada repositori dan alur kerja pengembangan.
▸ inisialisasi ( clientId , clientSecret , config? ): Promise void
Inisialisasi pipa ucapan; diperlukan untuk semua metode lainnya.
2 arg pertama adalah kredensial spokestack Anda yang tersedia secara gratis dari https://spokestack.io. Hindari hardcoding ini di aplikasi Anda. Ada beberapa cara untuk memasukkan variabel lingkungan dalam kode Anda.
Menggunakan Process.env: https://babeljs.io/docs/en/babel-plugin-transform-inline-environment-variables/
Menggunakan file .env lokal diabaikan oleh git: https://github.com/goatadsheep/react-native-dotenv https://github.com/luggit/react-native-config
Lihat SpokeStackConfig untuk semua opsi yang tersedia.
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
}
} ) | Nama | Jenis |
|---|---|
clientId | string |
clientSecret | string |
config? | [SpokestackConfig](#SpokestackConfig) |
Promise void
Index.ts: 64
▸ Destroy (): Promise void
Menghancurkan pipa ucapan, menghilangkan semua pendengar, dan membebaskan semua sumber daya. Ini dapat dipanggil sebelum memulai kembali pipa. Tempat yang bagus untuk menyebut ini ada di componentWillUnmount .
example
componentWillUnmount ( ) {
Spokestack . destroy ( )
} Promise void
Index.ts: 81
▸ start (): Promise void
Mulailah pipa ucapan. Pipa ucapan dimulai dalam keadaan 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
Hentikan pipa ucapan. Ini secara efektif menghentikan ASR, VAD, dan KEWING.
example
import Spokestack from 'react-native-spokestack`
// ...
await Spokestack . stop ( ) Promise void
index.ts: 110
▸ Activate (): Promise void
Aktifkan pipa ucapan secara manual. Ini diperlukan saat menggunakan profil PTT. Profil VAD juga dapat mengaktifkan ASR tanpa perlu memanggil metode ini.
example
import Spokestack from 'react-native-spokestack`
// ...
< Button title = "Listen" onClick = { ( ) => Spokestack . activate ( ) } /> Promise void
Index.ts: 126
▸ nonaktifkan (): Promise void
Nonaktifkan pipa ucapan. Jika profil termasuk Kata Wake, pipa akan kembali mendengarkan kata wakil. Jika VAD aktif, pipa dapat mengaktifkan kembali tanpa panggilan aktif ().
example
import Spokestack from 'react-native-spokestack`
// ...
< Button title = "Stop listening" onClick = { ( ) => Spokestack . deactivate ( ) } /> Promise void
Index.ts: 142
▸ sintesis ( input , format? , voice? ): Promise string
Mensintesis beberapa teks ke dalam pidato mengembalikan Promise<string> dengan string menjadi URL untuk MPEG yang dapat dimainkan.
Saat ini hanya ada satu suara gratis yang tersedia ("Demo-Male"). Suara dapat diubah jika Anda telah membuat suara khusus menggunakan akun SpokeStack Maker. Lihat https://spokestack.io/pricing#maker.
example
const url = await Spokestack . synthesize ( 'Hello world' )
play ( url ) | Nama | Jenis |
|---|---|
input | string |
format? | [TTSFormat](#TTSFormat) |
voice? | string |
Promise string
Index.ts: 158
▸ Bicara ( input , format? , voice? ): Promise void
Sintesis beberapa teks ke dalam ucapan dan kemudian segera mainkan audio melalui sistem audio default. Penanganan sesi audio bisa menjadi sangat kompleks dan kami sarankan menggunakan perpustakaan RN yang berfokus pada audio untuk apa pun yang lebih dari pemutaran yang sangat sederhana.
Saat ini hanya ada satu suara gratis yang tersedia ("Demo-Male").
example
await Spokestack . speak ( 'Hello world' ) | Nama | Jenis |
|---|---|
input | string |
format? | [TTSFormat](#TTSFormat) |
voice? | string |
Promise void
Index.ts: 174
▸ CLUSTIFY ( utterance ): Promise SpokestackNLUResult
Klasifikasikan ucapan menggunakan Model Pemahaman Bahasa Natural/Slot yang diteruskan ke SpokeStack.Initialize (). Lihat https://www.spokestack.io/docs/concepts/nlu untuk info lebih lanjut.
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 | Nama | Jenis |
|---|---|
utterance | string |
Promise SpokestackNLUResult
Index.ts: 190
▸ isinitialized (): Promise boolean
Mengembalikan apakah spokestack telah diinisialisasi
example
console . log ( `isInitialized: ${ await Spokestack . isInitialized ( ) } ` ) Promise boolean
Index.ts: 199
▸ ISstarted (): Promise boolean
Mengembalikan apakah pipa ucapan telah dimulai
example
console . log ( `isStarted: ${ await Spokestack . isStarted ( ) } ` ) Promise boolean
Index.ts: 208
▸ isactivated (): Promise boolean
Mengembalikan apakah pipa bicara saat ini diaktifkan
example
console . log ( `isActivated: ${ await Spokestack . isActivated ( ) } ` ) Promise boolean
Index.ts: 217
• Keyakinan : number
Angka dari 0 hingga 1 yang mewakili kepercayaan model NLU pada niat yang diakui, di mana 1 mewakili kepercayaan absolut.
type.ts: 115
• Intent : string
Maksud berdasarkan kecocokan yang disediakan oleh model NLU
type.ts: 113
• slot : SpokestackNLUSlots
Data yang terkait dengan niat, disediakan oleh model NLU
type.ts: 117
▪ [Kunci: string ]: SpokestackNLUSlot
• RawValue : string
Nilai string asli dari slot yang dikenali dalam ucapan pengguna
type.ts: 104
• Ketik : string
Tipe slot, sebagaimana didefinisikan dalam metadata model
type.ts: 100
• Nilai : any
Nilai parsed (diketik) dari slot yang dikenali dalam ucapan pengguna
type.ts: 102
▸ AddEventListener ( eventType , listener , context? ): EmitterSubscription
Ikat ke acara apa pun yang dipancarkan oleh Perpustakaan Asli, lihat acara untuk daftar semua acara yang tersedia.
example
useEffect ( ( ) => {
const listener = Spokestack . addEventListener ( 'recognize' , onRecognize )
// Unsubsribe by calling remove when components are unmounted
return ( ) => {
listener . remove ( )
}
} , [ ] ) | Nama | Jenis | Keterangan |
|---|---|---|
eventType | string | Nama acara yang kami daftarkan pendengar |
listener | ( event : any ) => void | fungsi pendengar |
context? | Object | konteks pendengar |
EmitterSubscription
Index.ts: 237
▸ RemestEventListener ( eventType , listener ): void
Hapus pendengar acara
example
Spokestack . removeEventListener ( 'recognize' , onRecognize ) | Nama | Jenis | Keterangan |
|---|---|---|
eventType | string | Nama acara untuk dipancarkan |
listener | (... args : any []) => any | Fungsi untuk memohon saat acara yang ditentukan dipancarkan |
void
Index.ts: 253
▸ RemoveAlllisteners (): void
Hapus pendengar yang ada
example
Spokestack . removeAllListeners ( ) void
Index.ts: 265
Tiga format didukung saat menggunakan TTS SpokeStack. Teks mentah, SSML, dan penurunan harga ucapan. Lihat https://www.speechmarkdown.org/ jika tidak terbiasa dengan penurunan harga pidato. IPA diharapkan saat menggunakan SSML atau Markdown Pidato.
• pidato -tute = 2
type.ts: 73
• ssml = 1
type.ts: 72
• Teks = 0
type.ts: 71
Gunakan addEventListener() , removeEventListener() , dan removeAllListeners() untuk menambah dan menghapus penangan acara. Semua acara tersedia di iOS dan Android.
| Nama | Data | Keterangan |
|---|---|---|
| mengenali | { transcript: string } | Dipecat setiap kali pengenalan suara berhasil selesai. |
| parsial_recognize | { transcript: string } | Dipecat setiap kali transkrip berubah selama pengenalan suara. |
| awal | null | Dipecat ketika pipa ucapan dimulai (yang mulai mendengarkan kata wakil atau mulai VAD). |
| berhenti | null | Dipecat ketika pipa pidato berhenti. |
| mengaktifkan | null | Dipecat ketika pipa ucapan diaktifkan, baik melalui VAD, Wakword, atau saat memanggil .activate() . |
| menonaktifkan | null | Dipecat ketika pipa pidato menonaktifkan. |
| bermain | { playing: boolean } | Dipecat saat pemutaran TTS dimulai dan berhenti. Lihat fungsi speak() . |
| Batas waktu | null | Dipecat ketika saluran pipa aktif keluar karena kurangnya pengakuan. |
| jejak | { message: string } | Dipecat untuk pesan jejak. Verbositas ditentukan oleh opsi traceLevel . |
| kesalahan | { error: string } | Dipecat saat ada kesalahan di SpokeStack. |
Ketika peristiwa kesalahan dipicu, setiap janji yang ada ditolak.
Ini adalah opsi konfigurasi yang dapat diteruskan ke Spokestack.initialize(_, _, spokestackConfig) . Tidak diperlukan opsi di SpokeStackConfig.
SpokeStackConfig memiliki struktur berikut:
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
} Berapa banyak logging untuk menunjukkan angka yang lebih rendah berarti lebih banyak log.
• debug = 10
type.ts: 58
• info = 30
type.ts: 60
• Tidak ada = 100
type.ts: 61
• perf = 20
type.ts: 59
Profil Pipeline Menyiapkan Pipa Pidato Berdasarkan Kebutuhan Anda
• ptt_native_asr = 2
Pengenalan ucapan otomatis Apple/Android aktif saat pipa ucapan aktif. Ini kemungkinan adalah profil yang lebih umum saat tidak menggunakan kata wakil.
type.ts: 24
• ptt_spokestack_asr = 5
SPOKESTACK Automatic ucapan pengenalan saat pipa ucapan aktif. Ini kemungkinan adalah profil yang lebih umum saat tidak menggunakan katage, tetapi SpokeStack ASR lebih disukai.
type.ts: 42
• tflite_wakeword_keyword = 6
Kata bangun tflite vad-sensitif mengaktifkan kata kunci tflite pengenalan
type.ts: 46
• tflite_wakeword_native_asr = 0
Siapkan Kata Wake dan gunakan Asr Apple/Android lokal. Perhatikan bahwa Wakword.filter, Wakword.encode, dan Wakword.
type.ts: 12
• tflite_wakeword_spokestack_asr = 3
Siapkan Kata Wake dan gunakan SpokeStack Remote ASR. Perhatikan bahwa Wakword.filter, Wakword.encode, dan Wakword.
type.ts: 30
• vad_keyword_asr = 7
Pengenalan kata kunci tflite yang dipicu vad
type.ts: 50
• vad_native_asr = 1
Pengenalan ucapan otomatis Apple/Android aktif saat deteksi aktif suara memicu.
type.ts: 17
• vad_spokestack_asr = 4
SPOKESTACK Pengenalan ucapan otomatis sedang terjadi ketika deteksi suara aktif memicu.
type.ts: 35
• Optional AgCCompressionGainDB : number
advanced
Android-only untuk AcousticGainControl
Level audio puncak target, di -db, untuk mempertahankan puncak -9dB, mengkonfigurasi nilai 9
type.ts: 192
• Optional AgCtargetLevelDBFS : number
advanced
Android-only untuk AcousticGainControl
Tingkat kompresi rentang dinamis, dalam DBFS
type.ts: 200
• Anspolicy Optional : "aggressive" | "very-aggressive" | "mild" | "medium"
advanced
Android-only untuk AcousticNoisesuppressor
Kebijakan Kebisingan
type.ts: 183
• Bufferwidth Optional : number
advanced
Lebar buffer, digunakan dengan framewidth untuk menentukan ukuran buffer
type.ts: 155
• Framewidth Optional : number
advanced
Lebar bingkai ucapan, dalam MS
type.ts: 149
• Profil Optional : PipelineProfile
Profil adalah koleksi konfigurasi umum untuk tahap pipa.
Jika tidak ada profil yang diatur secara eksplisit, SpokeStack menentukan profil default yang masuk akal berdasarkan konfigurasi yang diteruskan ke Spokestack.initialize() :
Jika file konfigurasi kata wakil diatur (dan konfigurasi kata kunci tidak), default akan diatur ke TFLITE_WAKEWORD_NATIVE_ASR .
Jika file konfigurasi kata kunci diatur (dan konfigurasi kata wakil tidak), default akan diatur ke VAD_KEYWORD_ASR .
Jika file konfigurasi kata kunci dan kata kunci diatur, default akan diatur ke TFLITE_WAKEWORD_KEYWORD .
Jika tidak, standarnya adalah PTT_NATIVE_ASR .
type.ts: 139
• Sampel Optional : number
Laju pengambilan sampel audio, di HZ
type.ts: 143
• Optional VaDfallDelay : number
advanced
Panjang run deteksi edge, dalam MS; Nilai ini menentukan berapa banyak sampel negatif yang harus diterima untuk membalik detektor ke negatif
type.ts: 166
• Vadmode Optional : "quality" | "low-bitrate" | "aggressive" | "very-aggressive"
Mode Detektor Aktivitas Suara
type.ts: 159
• Optional Vadrisedelay : number
advanced
Hanya android
Panjang run deteksi edge-edge, dalam MS; Nilai ini menentukan berapa banyak sampel positif yang harus diterima untuk membalik detektor ke positif
type.ts: 175
• Metadata : string | number
File JSON untuk metadata NLU. Jika ditentukan, model dan vocab juga diperlukan.
Bidang ini menerima 2 jenis nilai.
require atau import (misalnya metadata: require('./metadata.sjson') ). PENTING: Ekstensi khusus digunakan untuk file metadata json lokal ( .sjson ) saat menggunakan require atau import sehingga file tidak diuraikan ketika dimasukkan tetapi malah diimpor sebagai objek sumber. Ini membuatnya jadi file dibaca dan diuraikan oleh perpustakaan asli yang mendasarinya.
type.ts: 223
• Model : string | number
Model NLU TensorFlow-Lite. Jika ditentukan, metadata dan vocab juga diperlukan.
Bidang ini menerima 2 jenis nilai.
require atau import (misalnya model: require('./nlu.tflite') )) type.ts: 211
• Vocab : string | number
File txt yang berisi kosa kata NLU. Jika ditentukan, model dan metadata juga diperlukan.
Bidang ini menerima 2 jenis nilai.
require atau import (misalnya vocab: require('./vocab.txt') )) type.ts: 231
• InputLength Optional : number
type.ts: 244
• Deteksi : string | number
Model "Deteksi" TensorFlow-Lite. Jika ditentukan, filter dan enkode juga diperlukan.
Bidang ini menerima 2 jenis nilai.
require atau import (misalnya detect: require('./detect.tflite') ))Model Encode digunakan untuk melakukan setiap langkah autoregresif di atas bingkai MEL; Inputnya harus dibentuk [Mel-length, Mel-width], dan outputnya [encode-lebar], dengan input/output status tambahan yang berbentuk [width-width]
type.ts: 272
• Encode : string | number
Model "encode" tensorflow-lite. Jika ditentukan, filter dan deteksi juga diperlukan.
Bidang ini menerima 2 jenis nilai.
require atau import (misalnya encode: require('./encode.tflite') ))Inputnya harus dibentuk [encode-length, encode-width], dan outputnya
type.ts: 283
• Filter : string | number
Model "filter" TensorFlow-Lite. Jika ditentukan, deteksi dan enkode juga diperlukan.
Bidang ini menerima 2 jenis nilai.
require atau import (misalnya filter: require('./filter.tflite') ))Model filter digunakan untuk menghitung bingkai spektrogram MEL dari STFT linier; Inputnya harus dibentuk [fft-width], dan outputnya [Mel-lebar]
type.ts: 260
• ActiveMax Optional : number
advanced
Panjang maksimum suatu aktivasi, dalam milidetik, digunakan untuk menghitung waktu aktivasi
type.ts: 373
• Activemin Optional : number
advanced
Panjang minimum suatu aktivasi, dalam milidetik, digunakan untuk mengabaikan penonaktifan VAD setelah kata bangun
type.ts: 366
• Optional RequestTimeout : number
hanya iOS
Lama waktu untuk mengizinkan permintaan ASR Apple untuk berjalan, dalam milidetik. Apple memiliki batas tidak berdokumen 60000ms per permintaan.
type.ts: 380
• RMSalpha Optional : number
Android-only advanced
Laju pembaruan Moving Average (EWMA) yang berukuran eksponensial (EWMA) untuk energi sinyal RMS saat ini (0 tanpa normalisasi RMS)
type.ts: 397
• Optional RMSTIONAL : number
Android-only advanced
Energi sinyal rata -rata akar linear yang diinginkan (RMS), yang digunakan untuk normalisasi sinyal dan harus disetel ke target RMS yang digunakan selama pelatihan
type.ts: 389
• Kata Wake Optional : string | string []
hanya iOS
Array yang dipesan atau daftar kata kunci kata wakil yang dipisahkan secara koma hanya diperlukan saat tidak melewati filter, mendeteksi, dan menyandikan jalur.
type.ts: 404
• Deteksi : string | number
Model "Deteksi" TensorFlow-Lite. Jika ditentukan, filter dan enkode juga diperlukan.
Bidang ini menerima 2 jenis nilai.
require atau import (misalnya detect: require('./detect.tflite') ))Model Encode digunakan untuk melakukan setiap langkah autoregresif di atas bingkai MEL; Inputnya harus dibentuk [Mel-length, Mel-width], dan outputnya [encode-lebar], dengan input/output status tambahan yang berbentuk [width-width]
type.ts: 272
• Encode : string | number
Model "encode" tensorflow-lite. Jika ditentukan, filter dan deteksi juga diperlukan.
Bidang ini menerima 2 jenis nilai.
require atau import (misalnya encode: require('./encode.tflite') ))Inputnya harus dibentuk [encode-length, encode-width], dan outputnya
type.ts: 283
• Filter : string | number
Model "filter" TensorFlow-Lite. Jika ditentukan, deteksi dan enkode juga diperlukan.
Bidang ini menerima 2 jenis nilai.
require atau import (misalnya filter: require('./filter.tflite') ))Model filter digunakan untuk menghitung bingkai spektrogram MEL dari STFT linier; Inputnya harus dibentuk [fft-width], dan outputnya [Mel-lebar]
type.ts: 260
Baik metadata atau classes diperlukan, dan mereka saling eksklusif.
• Metadata : string | number
File JSON untuk metadata kata kunci. Diperlukan jika keyword.classes tidak ditentukan.
Bidang ini menerima 2 jenis nilai.
require atau import (misalnya metadata: require('./metadata.sjson') ). PENTING: Ekstensi khusus digunakan untuk file metadata json lokal ( .sjson ) saat menggunakan require atau import sehingga file tidak diuraikan ketika dimasukkan tetapi malah diimpor sebagai objek sumber. Ini membuatnya jadi file dibaca dan diuraikan oleh perpustakaan asli yang mendasarinya.
type.ts: 424
• Kelas : string | string []
Daftar yang dipisahkan koma atau serangkaian nama kelas yang dipesan untuk kata kunci. Nama yang sesuai dengan kelas yang paling mungkin akan dikembalikan di bidang transkrip ketika acara pengakuan dinaikkan. Diperlukan jika keyword.metadata tidak ditentukan.
type.ts: 434
Properti ini dapat diteruskan ke Objek wakeword atau keyword , tetapi tidak dibagikan.
• Optional Encodelength : number
advanced
Panjang jendela geser output encoder yang digunakan sebagai input ke classifier, dalam milidetik
type.ts: 293
• Optional EncodeWidth : number
advanced
Ukuran output encoder, dalam unit vektor
type.ts: 299
• FFTHOPLength Optional : number
advanced
Lamanya waktu untuk melewatkan setiap kali stft yang tumpang tindih dihitung, dalam milidetik
type.ts: 322
• Optional FFTWindowsize : number
advanced
Ukuran jendela sinyal yang digunakan untuk menghitung STFT, dalam jumlah sampel - harus menjadi kekuatan 2 untuk efisiensi maksimal
type.ts: 306
• FFTWindowType Optional : string
advanced
Hanya android
Nama fungsi windowing untuk diterapkan ke setiap bingkai audio sebelum menghitung STFT; Saat ini jendela "Hann" didukung
type.ts: 315
• Optional Melramelength : number
advanced
Lamanya waktu untuk melewatkan setiap kali stft yang tumpang tindih dihitung, dalam milidetik
type.ts: 329
• Optional Melsframewidth : number
advanced
Ukuran setiap bingkai spektrogram MEL, dalam jumlah komponen filterbank
type.ts: 336
• Preemphasis Optional : number
advanced
Berat filter pra-penekanan untuk diterapkan pada sinyal audio yang dinormalisasi (0 tanpa pra-penekanan)
type.ts: 343
• StateWidth Optional : number
advanced
Ukuran status enkoder, dalam unit vektor (default untuk bangun-enkode-lebar)
type.ts: 349
• Ambang Optional : number
advanced
Ambang batas output posterior classifier, di atasnya pemicu mengaktifkan pipa, dalam kisaran [0, 1]
type.ts: 356
Apache-2.0
Hak Cipta 2021 Spokestack