
Komponen Native Bereaksi untuk Menambahkan SpokeStack ke Aplikasi Native React.

Instal perpustakaan ini dengan dependensi rekan
One-Liner untuk menginstal semua dependensi
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-feedbackKemudian ikuti instruksi untuk setiap platform untuk menautkan react-native-spokestack ke proyek Anda:
React-native-spokeStack memanfaatkan API yang relatif baru hanya tersedia di iOS 13+. Pastikan untuk mengatur target penempatan Anda ke iOS 13.
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.
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 Kami menggunakan React-asli-permisi untuk memeriksa dan meminta izin mikrofon (iOS dan Android) dan izin pengenalan suara (hanya iOS). Perpustakaan ini memisahkan setiap izin ke dalam podnya sendiri untuk menghindari menggembungkan aplikasi Anda dengan kode yang tidak Anda gunakan. Tambahkan pod berikut ke podfile Anda:
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 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. Di Xcode, juga pastikan target penyebaran iOS Anda diatur ke 13.0 atau lebih tinggi.
< 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 {
// 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 " ) 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 " /> 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'
} }
/>
)
} 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 : {
// json is already in the list
assetExts : defaults . assetExts . concat ( [ 'tflite' , 'txt' , 'sjson' ] )
}
}Kemudian sertakan file model menggunakan objek sumber:
< 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' )
} }
/> 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.
<SpokestackTray /> props komponen • Tombol Optional : number (Default: 60 )
Lebar (dan tinggi) tombol mic
src/spokestacktray.tsx: 132
• ClientId : string
Token spokestack Anda yang dihasilkan di akun spokestack Anda di https://spokestack.io/account. Buat akun secara gratis lalu buat token. Ini dari bidang "ID".
src/spokestacktray.tsx: 74
• ClientSecret : string
Token spokestack Anda yang dihasilkan di akun spokestack Anda di https://spokestack.io/account. Buat akun secara gratis lalu buat token. Ini dari bidang "rahasia".
src/spokestacktray.tsx: 81
• Optional Closedelay : number (default: 0 )
Berapa lama menunggu untuk menutup nampan setelah berbicara (ms)
src/spokestacktray.tsx: 134
• Debug Optional : boolean
Tampilkan pesan debug dari react-native-spokestack
src/spokestacktray.tsx: 136
• Durasi Optional : number (Default: 500 )
Durasi untuk Animasi Baki (MS)
src/spokestacktray.tsx: 138
• EASING Optional : EasingFunction (DEFAULT: EASING.BEZIER (0,77, 0,41, 0,2, 0,84) )
Fungsi pelonggaran untuk animasi baki
src/spokestacktray.tsx: 140
• Keluar Optional : string []
Semua node dalam array ini harus mengakhiri percakapan dan menutup nampan
src/spokestacktray.tsx: 150
• FontFamily Optional : string
Font untuk digunakan untuk "Mendengarkan ...", "Memuat ...", dan obrolan teks gelembung.
src/spokestacktray.tsx: 155
• GradientColors Optional : string [] (default: ["#61fae9", "#2f5bea"] )
Warna untuk gradien linier yang ditunjukkan saat mendengarkan dapat menjadi sejumlah warna (disarankan: 2-3)
src/spokestacktray.tsx: 160
• Salam Optional : boolean (default: false )
Apakah akan menyambut pengguna dengan pesan selamat datang saat baki terbuka. CATATAN: handleIntent harus menanggapi niat "menyapa".
src/spokestacktray.tsx: 166
• Haptic Optional : boolean (default: true )
Atur ini ke false untuk menonaktifkan haptic yang dimainkan setiap kali baki mulai mendengarkan.
src/spokestacktray.tsx: 171
• Kata kunci Optional : KeywordConfig
Konfigurasi untuk pengenalan kata kunci
Bidang filter, deteksi, encode, dan metadata menerima 2 jenis nilai.
require atau import (misalnya model: require('./nlu.tflite') ))Lihat https://www.spokestack.io/docs/concepts/keywords untuk mempelajari lebih lanjut tentang pengenalan kata kunci.
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'
} }Anda juga dapat mengunduh model sebelumnya dan memasukkannya dari file lokal. Catatan: Ini membutuhkan perubahan pada metro.config.js Anda. Untuk info lebih lanjut, lihat "Termasuk file model di bundel aplikasi Anda" di 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' )
} }Konfigurasi kata kunci juga menerima bidang kelas ketika metadata tidak ditentukan.
// ...
keyword = { {
detect : require ( './detect.tflite' ) ,
encode : require ( './encode.tflite' ) ,
filter : require ( './filter.tflite' ) ,
classes : [ 'one' , 'two' , 'three]
} } src/spokestacktray.tsx: 221
• MinHeight Optional : number (default: 170 )
Tinggi minimum untuk nampan
src/spokestacktray.tsx: 223
• nlu : NLUConfig
NLU TensorFlow Lite Model (.tFlite), JSON Metadata, dan NLU Vocabulary (.txt)
Semua 3 bidang menerima 2 jenis nilai.
require atau import (misalnya model: require('./nlu.tflite') ))Lihat https://spokestack.io/docs/concepts/nlu untuk mempelajari lebih lanjut tentang NLU.
// ...
nlu = { {
model : 'https://somecdn.com/nlu.tflite' ,
vocab : 'https://somecdn.com/vocab.txt' ,
metadata : 'https://somecdn.com/metadata.json'
} }Anda juga dapat meneruskan file lokal. Catatan: Ini membutuhkan perubahan pada metro.config.js Anda. Untuk info lebih lanjut, lihat "Termasuk file model di bundel aplikasi Anda" di 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
• Orientasi Optional : "left" | "right" (default: "kiri" )
Tombol baki dapat diorientasikan di kedua sisi layar
src/spokestacktray.tsx: 235
• Optional PrimaryColor : string (default: "#2F5BEA" )
Warna ini digunakan untuk bertema baki dan digunakan dalam tombol mic dan gelembung ucapan.
src/spokestacktray.tsx: 240
• Profil Optional : PipelineProfile
Profil konfigurasi spokeStack untuk dilewati ke react-native-spokeStack. Ini tersedia dari react-native-spokestack mulai dari versi 4.0.0.
Jika file konfigurasi kata wakil ditentukan, defaultnya adalah TFLITE_WAKEWORD_NATIVE_ASR . Jika tidak, standarnya adalah 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
• Refreshmodels Optional : boolean
Gunakan ini dengan hemat untuk menyegarkan model bangun, kata kunci, dan model NLU pada perangkat (Force Overwrite). <SpokestackTray refreshModels={process.env.NODE_ENV !== 'production'} ... />
src/spokestacktray.tsx: 268
• Saygreeting Optional : boolean (default: true )
Apakah akan berbicara ucapan atau hanya menampilkan gelembung obrolan dengan pesan salam, bahkan jika suara menyala.
src/spokestacktray.tsx: 274
• Optional SoundOffImage : ReactNode (default: (<Image source = {soundoffImage} style = {{width: 30, tinggi: 30} />)) )
Ganti gambar suara dengan melewati komponen gambar bereaksi
src/spokestacktray.tsx: 278
• Optional SoundOnImage : ReactNode (default: (<Image source = {soundonimage} style = {{width: 30, tinggi: 30} />)) )
Ganti suara pada gambar dengan meneruskan komponen gambar bereaksi
src/spokestacktray.tsx: 276
• Optional SpokeStackConfig : Partial SpokestackConfig
Opsi lulus langsung ke fungsi spokeStack.Initialize () dari react-native-spokeStack. Lihat https://github.com/spokestack/react-native-pokestack untuk opsi yang tersedia.
src/spokestacktray.tsx: 285
• Startheight Optional : number (default: 220 )
Tinggi awal untuk baki
src/spokestacktray.tsx: 287
• Gaya Optional : false | RegisteredStyle ViewStyle | Value | AnimatedInterpolation | WithAnimatedObject ViewStyle | WithAnimatedArray < false | ViewStyle | RegisteredStyle ViewStyle | RecursiveArray < false | ViewStyle | RegisteredStyle ViewStyle > | readonly ( false | ViewStyle | RegisteredStyle ViewStyle ) []>
Prop gaya ini diteruskan ke wadah baki
src/spokestacktray.tsx: 289
• TTSFormat Optional : TTSFormat (default: ttsformat.text )
Format untuk teks yang diteruskan ke spokestack.synthesize
src/spokestacktray.tsx: 291
• Suara Optional : string (default: "Demo-Male" )
Kunci untuk suara di spokestack tts, diteruskan ke spokestack.synthesize. Ini hanya dapat diubah jika Anda telah membuat suara khusus menggunakan akun SpokeStack Maker. Lihat https://spokestack.io/pricing#maker. Jika tidak ditentukan, suara "demo-laki-laki" gratis SpokeStack digunakan.
src/spokestacktray.tsx: 298
• Kata Wake Optional : WakewordConfig
NLU TensorFlow Lite Models (.tFlite) untuk katage.
Semua 3 bidang menerima 2 jenis nilai.
require atau import (misalnya model: require('./nlu.tflite') ))Lihat https://spokestack.io/docs/concepts/wakeword-odels untuk mempelajari lebih lanjut tentang katage
SpokeStack Menawarkan File Model Kata Wake Sampel ("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'
} }Anda juga dapat mengunduh model ini sebelumnya dan memasukkannya dari file lokal. Catatan: Ini membutuhkan perubahan pada metro.config.js Anda. Untuk info lebih lanjut, lihat "Termasuk file model di bundel aplikasi Anda" di readme.md.
// ...
wakeword = { {
detect : require ( './detect.tflite' ) ,
encode : require ( './encode.tflite' ) ,
filter : require ( './filter.tflite' )
} } src/spokestacktray.tsx: 332
▸ EditTranscript Optional ( transcript ): string
Edit transkrip sebelum klasifikasi dan sebelum gelembung respons pengguna ditampilkan.
| Nama | Jenis |
|---|---|
transcript | string |
string
src/spokestacktray.tsx: 145
▸ handleintent ( intent , slots? , utterance? ): [IntentResult](#IntentResult)
Fungsi ini mengambil niat dari NLU dan mengembalikan objek dengan nama simpul percakapan yang unik (yang Anda definisikan) dan prompt untuk diproses oleh TTS dan diucapkan.
Catatan: Prompt hanya ditampilkan dalam gelembung obrolan jika suara telah dimatikan.
| Nama | Jenis |
|---|---|
intent | string |
slots? | SpokestackNLUSlots |
utterance? | string |
[IntentResult](#IntentResult)
src/spokestacktray.tsx: 91
▸ Optional Onclose (): void
Dipanggil setiap kali baki ditutup
void
src/spokestacktray.tsx: 227
▸ Optional Onerror ( e ): void
Dipanggil kapan pun ada kesalahan dari spokestack
| Nama | Jenis |
|---|---|
e | SpokestackErrorEvent |
void
src/spokestacktray.tsx: 229
▸ Onopen Optional (): void
Dipanggil kapan pun baki dibuka
void
src/spokestacktray.tsx: 231
• Data Optional : any
Data lain yang mungkin ingin Anda tambahkan
src/spokestacktray.tsx: 64
• Optional no interrupt : boolean
Setel ke true untuk menghentikan pengenalan wakword selama pemutaran prompt.
src/spokestacktray.tsx: 62
• Node : string
Kunci yang ditentukan pengguna untuk menunjukkan di mana pengguna berada dalam percakapan memasukkan ini di exitNodes Prop jika SpokeStack tidak boleh mendengarkan lagi setelah mengatakan prompt.
src/spokestacktray.tsx: 55
• Prompt : string
Akan diproses menjadi pidato kecuali baki dalam mode diam
src/spokestacktray.tsx: 57
<SpokestackTray /> Metode KomponenMetode ini tersedia dari komponen spokestacktray. Gunakan REC REF untuk mengakses metode ini.
const spokestackTray = useRef ( null )
// ...
< SpokestackTray ref = { spokestackTray }
// ...
spokestackTray . current . say ( 'Here is something for Spokestack to say' ) Catatan : Dalam kebanyakan kasus, Anda harus menelepon listen bukannya open .
▸ open (): void
Buka baki, sapa (jika berlaku), dan dengarkan
void
src/spokestacktray.tsx: 743
▸ tutup (): void
Tutup nampan, berhentilah mendengarkan, dan memulai kembali kata wakil
void
src/spokestacktray.tsx: 754
▸ katakan ( input ): Promise void
Meneruskan input ke spokestack.synthesize (), memainkan audio, dan menambahkan gelembung ucapan.
| Nama | Jenis |
|---|---|
input | string |
Promise void
src/spokestacktray.tsx: 766
▸ addBubble ( bubble ): void
Tambahkan gelembung (sistem atau pengguna) ke antarmuka obrolan
| Nama | Jenis |
|---|---|
bubble | Bubble |
void
src/spokestacktray.tsx: 799
• Isleft : boolean
SRC/KOMPONEN/PUSTAKABUBBLES.TSX: 9
• Teks : string
SRC/KOMPONEN/PIDAGEBUBBLES.TSX: 8
▸ toglesilent (): Promise boolean
Toggle Mode Silent
Promise boolean
src/spokestacktray.tsx: 816
▸ Issilent (): boolean
Mengembalikan apakah baki dalam mode diam
boolean
src/spokestacktray.tsx: 828
Fungsi-fungsi ini tersedia sebagai ekspor dari react-native-spokestack-tray
▸ Listen (): Promise void
Memberitahu Pipa Pidato SpokeStack untuk mulai mendengarkan. Juga meminta izin untuk mendengarkan jika perlu. Ini akan mencoba untuk memulai pipa sebelum diaktifkan jika belum dimulai. Fungsi ini tidak akan melakukan apa pun jika aplikasi ada di latar belakang.
import { listen } from 'react-native-spokestack-tray'
try {
await listen()
} catch (error) {
console.error(error)
}
Promise void
src/spokestack.ts: 21
▸ StopListening (): Promise void
Promise void
src/spokestack.ts: 30
▸ Const isListening (): Promise boolean
Mengembalikan apakah spokestack saat ini mendengarkan
console . log ( `isListening: ${ await isListening ( ) } ` ) Promise boolean
src/index.ts: 19
▸ Const isinitialized (): Promise boolean
Mengembalikan apakah spokestack telah diinisialisasi
console . log ( `isInitialized: ${ await isInitialized ( ) } ` ) Promise boolean
SRC/INDEX.TS: 27
▸ Const isStarted (): Promise boolean
Mengembalikan apakah pipa ucapan telah dimulai
console . log ( `isStarted: ${ await isStarted ( ) } ` ) Promise boolean
src/index.ts: 35
▸ Const AddEventListener ( eventType , listener , context? ): EmitterSubscription
Bind ke peristiwa apa pun yang dipancarkan oleh perpustakaan asli peristiwa adalah: "kenali", "parsial_recognize", "error", "Activate", "Nonaktifkan", dan "Timeout". Lihat bagian bawah readme.md untuk deskripsi acara.
useEffect ( ( ) => {
const listener = addEventListener ( 'recognize' , onRecognize )
// Unsubscribe by calling remove when components are unmounted
return ( ) => {
listener . remove ( )
}
} , [ ] ) | Nama | Jenis |
|---|---|
eventType | string |
listener | ( event : any ) => void |
context? | Object |
EmitterSubscription
src/index.ts: 51
▸ Const RemestEventListener ( eventType , listener ): void
Hapus pendengar acara
removeEventListener ( 'recognize' , onRecognize ) | Nama | Jenis |
|---|---|
eventType | string |
listener | (... args : any []) => any |
void
SRC/INDEX.TS: 59
▸ Const RemoveAlllisteners (): void
Hapus pendengar yang ada
componentWillUnmount ( ) {
removeAllListeners ( )
} void
SRC/INDEX.TS: 69
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.
Fungsi utilitas ini digunakan oleh SpokeStack untuk memeriksa izin mikrofon di iOS dan android dan izin pengenalan suara di iOS.
▸ checkspeech (): Promise boolean
Fungsi ini dapat digunakan untuk memeriksa apakah pengguna telah memberikan izin yang diperlukan untuk berbicara. Di iOS, ini termasuk mikrofon dan pengulangan pidato. Di Android, hanya mikrofon yang diperlukan.
import { checkSpeech } from 'react-native-spokestack-tray'
// ...
const hasPermission = await checkSpeech ( ) Promise boolean
src/utils/izins.ts: 78
▸ RequestSpeech (): Promise boolean
Fungsi ini dapat digunakan untuk benar -benar meminta izin yang diperlukan untuk berbicara. Di iOS, ini termasuk mikrofon dan pengulangan pidato. Di Android, hanya mikrofon yang diperlukan.
Catatan: Jika pengguna telah menurun di masa lalu di iOS, pengguna harus dikirim ke pengaturan.
import { requestSpeech } from 'react-native-spokestack-tray'
// ...
const hasPermission = await requestSpeech ( ) Promise boolean
src/utils/izins.ts: 106
Mit