
ส่วนประกอบของ React Native สำหรับการเพิ่ม spokestack ลงในแอพ React Native ใด ๆ

ติดตั้งไลบรารีนี้ด้วยการพึ่งพาเพียร์
หนึ่งซับในการติดตั้งการพึ่งพาทั้งหมด
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-feedbackจากนั้นทำตามคำแนะนำสำหรับแต่ละแพลตฟอร์มเพื่อเชื่อมโยง React-Native-Spokestack ไปยังโครงการของคุณ:
React-Native-Spokestack ใช้ประโยชน์จาก API ที่ค่อนข้างใหม่เฉพาะใน iOS 13+ ตรวจสอบให้แน่ใจว่าได้ตั้งค่าเป้าหมายการปรับใช้ของคุณเป็น iOS 13
ก่อนอื่นให้เปิด XCode และไปที่โครงการ -> ข้อมูลเพื่อตั้งค่าเป้าหมายการปรับใช้ iOS เป็น 13.0 หรือสูงกว่า
นอกจากนี้ให้ตั้งค่าการปรับใช้เป็น 13.0 ภายใต้เป้าหมาย -> ข้อมูลทั่วไป -> ข้อมูลการปรับใช้
เมื่อ Flipper ได้รับการแนะนำให้รู้จักกับ Native Native เส้นทางการค้นหาห้องสมุดบางเส้นทางถูกตั้งค่าสำหรับ Swift มีปัญหาที่ยาวนานกับเส้นทางการค้นหาเริ่มต้นในโครงการ React Native เนื่องจากเส้นทางการค้นหาถูกเพิ่มเข้ามาสำหรับ Swift 5.0 ซึ่งป้องกันไม่ให้ไลบรารีดั้งเดิมอื่น ๆ ใช้ APIs เฉพาะที่มีอยู่ใน Swift 5.2 หรือใหม่กว่า SPOKESTACK-IOS การพึ่งพาการตอบสนองของปฏิกิริยา--สปริงแซคใช้ประโยชน์จาก APIs และ XCode เหล่านี้จะไม่สามารถสร้างได้
โชคดีที่การแก้ไขค่อนข้างง่าย ไปที่เป้าหมายของคุณ -> สร้างการตั้งค่าและค้นหา "เส้นทางการค้นหาไลบรารี"
ลบ ""$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)"" จากรายการ
ก่อนที่จะ pod install ให้แน่ใจว่าได้ทำการแก้ไขต่อไปนี้
platform :ios , '13.0' เราต้องใช้ use_frameworks! ใน podfile ของเราเพื่อสนับสนุนการพึ่งพาที่เขียนด้วย Swift
target 'SpokestackExample' do
use_frameworks!
#... ในขณะนี้ use_frameworks! ไม่ทำงานกับ Flipper ดังนั้นเราจึงต้องปิดการใช้งาน Flipper ลบบรรทัดที่เกี่ยวข้องกับ Flipper ใน Podfile ของคุณ ใน 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 เราใช้ปฏิกิริยาตอบโต้แบบดั้งเดิมเพื่อตรวจสอบและขออนุญาตไมโครโฟน (iOS และ Android) และการอนุญาตการจดจำคำพูด (iOS เท่านั้น) ห้องสมุดนี้จะแยกการอนุญาตแต่ละครั้งออกเป็นพ็อดของตัวเองเพื่อหลีกเลี่ยงการพองตัวแอปของคุณด้วยรหัสที่คุณไม่ได้ใช้ เพิ่มพ็อดต่อไปนี้ลงใน PodFile ของคุณ:
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 ทำลายโครงการใด ๆ โดยใช้ use_frameworks! ใน Podfiles ของพวกเขา
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดนี้โปรดดู 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 ที่มีอยู่ของคุณเพื่อให้แน่ใจว่าไม่มีความขัดแย้งจากนั้นติดตั้ง PODs:
$ npx pod-installเพิ่มข้อมูลต่อไปนี้ในข้อมูลของคุณ PPLIST เพื่อเปิดใช้งานการอนุญาต ใน XCode ให้แน่ใจว่าเป้าหมายการปรับใช้ iOS ของคุณถูกตั้งค่าเป็น 13.0 หรือสูงกว่า
< 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 ทำงานเพื่อแก้ไขพ็อดของพวกเขาสำหรับ use_frameworks! เราต้องปิดการใช้งาน Flipper เราได้ลบการพึ่งพา Flipper จากฝักด้านบนแล้ว แต่ยังคงมีรหัสบางอย่างใน AppDelegate.m ที่นำเข้า Flipper มีสองวิธีในการแก้ไขปัญหานี้
-DFB_SONARKIT_ENABLED=1 จากแฟล็กในแอพตัวอย่างของเราเราได้ทำตัวเลือก 1 และทิ้งไว้ในรหัส Flipper ในกรณีที่พวกเขาทำงานได้ในอนาคตและเราสามารถเพิ่มกลับมาได้
# import < AVFoundation/AVFoundation.h > ตั้งค่าหมวดหมู่เสียง มีการกำหนดค่าหลายอย่างที่ใช้งานได้
ต่อไปนี้เป็นข้อเสนอแนะที่ควรพอดีกับกรณีการใช้งานส่วนใหญ่:
- ( 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 ) อย่างไรก็ตาม AndroidSpeechRecognizer ไม่สามารถใช้ได้กับอุปกรณ์ 100% หากแอปของคุณรองรับอุปกรณ์ที่ไม่มีการจดจำคำพูดในตัวให้ใช้ SPOKESTACK ASR แทนโดยการตั้งค่า profile เป็นโปรไฟล์ Spokestack โดยใช้ profile Prop
ดูเอกสาร ASR ของเราสำหรับข้อมูลเพิ่มเติม
// ...
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 " ) เพิ่มสิทธิ์ที่จำเป็นใน 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 " /> 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'
} }
/>
)
} ในการรวมไฟล์โมเดลในแอพของคุณ (แทนที่จะดาวน์โหลดจาก CDN) คุณต้องเพิ่มส่วนขยายที่จำเป็นเพื่อให้ไฟล์สามารถรวมไฟล์ได้โดย Babel ในการทำเช่นนี้แก้ไข metro.config.js ของคุณ
const defaults = require ( 'metro-config/src/defaults/defaults' )
module . exports = {
resolver : {
// json is already in the list
assetExts : defaults . assetExts . concat ( [ 'tflite' , 'txt' , 'sjson' ] )
}
}จากนั้นรวมไฟล์โมเดลโดยใช้วัตถุต้นทาง:
< 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' )
} }
/> สิ่งนี้ไม่จำเป็น ผ่าน URL ระยะไกลไปยังตัวเลือกการกำหนดค่าเดียวกันและไฟล์จะถูกดาวน์โหลดและแคชเมื่อโทรครั้งแรก initialize
ดูคู่มือการสนับสนุนเพื่อเรียนรู้วิธีการมีส่วนร่วมในที่เก็บและเวิร์กโฟลว์การพัฒนา
<SpokestackTray /> อุปกรณ์ประกอบฉากส่วนประกอบ • buttonWidth Optional : number (ค่าเริ่มต้น: 60 )
ความกว้าง (และความสูง) ของปุ่มไมค์
src/spokestacktray.tsx: 132
• clientId : string
โทเค็นสโปคสแต็คของคุณสร้างขึ้นในบัญชี Spokestack ของคุณที่ https://spokestack.io/account สร้างบัญชีฟรีจากนั้นสร้างโทเค็น นี่คือจากฟิลด์ "ID"
src/spokestacktray.tsx: 74
• Clientsecret : string
โทเค็นสโปคสแต็คของคุณสร้างขึ้นในบัญชี Spokestack ของคุณที่ https://spokestack.io/account สร้างบัญชีฟรีจากนั้นสร้างโทเค็น นี่คือจากฟิลด์ "ความลับ"
src/spokestacktray.tsx: 81
• shostelay Optional : number (ค่าเริ่มต้น: 0 )
รอนานแค่ไหนที่จะปิดถาดหลังจากพูด (MS)
src/spokestacktray.tsx: 134
• การดีบัก Optional : boolean
แสดงข้อความการดีบักจาก React-Native-Spokestack
src/spokestacktray.tsx: 136
• ระยะเวลา Optional : number (ค่าเริ่มต้น: 500 )
ระยะเวลาสำหรับภาพเคลื่อนไหวถาด (MS)
src/spokestacktray.tsx: 138
• การผ่อนคลาย Optional : EasingFunction (ค่าเริ่มต้น: Easing.bezier (0.77, 0.41, 0.2, 0.84) )
ฟังก์ชั่นการผ่อนคลายสำหรับแอนิเมชันถาด
src/spokestacktray.tsx: 140
• ExitNodes Optional : string []
โหนดทั้งหมดในอาร์เรย์นี้ควรจบการสนทนาและปิดถาด
src/spokestacktray.tsx: 150
• fontfamily Optional : string
แบบอักษรเพื่อใช้สำหรับ "การฟัง ... ", "กำลังโหลด ... " และแชทข้อความฟอง
src/spokestacktray.tsx: 155
•การ ไล่ระดับสี Optional : string [] (ค่าเริ่มต้น: ["#61FAE9", "#2F5BEA"] ))
สีสำหรับการไล่ระดับสีเชิงเส้นที่แสดงเมื่อการฟังอาจมีหลายสี (แนะนำ: 2-3)
src/spokestacktray.tsx: 160
• คำทักทาย Optional : boolean (ค่าเริ่มต้น: เท็จ )
ไม่ว่าจะทักทายผู้ใช้ด้วยข้อความต้อนรับเมื่อถาดเปิดขึ้น หมายเหตุ: handleIntent ต้องตอบสนองต่อเจตนา "ทักทาย"
src/spokestacktray.tsx: 166
• Optional Haptic : boolean (ค่าเริ่มต้น: จริง )
ตั้งค่าสิ่งนี้เป็นเท็จเพื่อปิดการใช้งานสัมผัสที่เล่นเมื่อใดก็ตามที่ถาดเริ่มฟัง
src/spokestacktray.tsx: 171
• คำหลัก Optional : KeywordConfig
การกำหนดค่าสำหรับการจดจำคำหลัก
ฟิลด์ตัวกรองตรวจจับเข้ารหัสและข้อมูลเมตายอมรับค่า 2 ประเภท
require หรือ import (เช่น model: require('./nlu.tflite') ))ดู https://www.spokestack.io/docs/concepts/keywords เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการจดจำคำหลัก
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'
} }นอกจากนี้คุณยังสามารถดาวน์โหลดรุ่นก่อนเวลาและรวมจากไฟล์ท้องถิ่น หมายเหตุ: สิ่งนี้ต้องการการเปลี่ยนแปลงไปยัง Metro.Config.js ของคุณ สำหรับข้อมูลเพิ่มเติมโปรดดู "รวมไฟล์รุ่นในชุดแอปของคุณ" ใน 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' )
} }การกำหนดค่าคำหลักยังยอมรับฟิลด์คลาสสำหรับเมื่อไม่ได้ระบุข้อมูลเมตา
// ...
keyword = { {
detect : require ( './detect.tflite' ) ,
encode : require ( './encode.tflite' ) ,
filter : require ( './filter.tflite' ) ,
classes : [ 'one' , 'two' , 'three]
} } src/spokestacktray.tsx: 221
• Minheight Optional : number (ค่าเริ่มต้น: 170 )
ความสูงขั้นต่ำสำหรับถาด
src/spokestacktray.tsx: 223
• nlu : NLUConfig
โมเดล NLU Tensorflow Lite (.tflite), JSON metadata และคำศัพท์ NLU (.txt)
ทั้ง 3 ฟิลด์ยอมรับค่า 2 ประเภท
require หรือ import (เช่น model: require('./nlu.tflite') ))ดู https://spokestack.io/docs/concepts/nlu เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ NLU
// ...
nlu = { {
model : 'https://somecdn.com/nlu.tflite' ,
vocab : 'https://somecdn.com/vocab.txt' ,
metadata : 'https://somecdn.com/metadata.json'
} }คุณยังสามารถส่งไฟล์ท้องถิ่น หมายเหตุ: สิ่งนี้ต้องการการเปลี่ยนแปลงไปยัง Metro.Config.js ของคุณ สำหรับข้อมูลเพิ่มเติมโปรดดู "รวมไฟล์รุ่นในชุดแอปของคุณ" ใน readme.md
// ...
nlu = { {
model : require ( './nlu.tflite' ) ,
vocab : require ( './vocab.txt' ) ,
// IMPORTANT: a special extension is used for local metadata JSON files (`.sjson`) when using `require` or `import`
// so the file is not parsed when included but instead imported as a source object. This makes it so the
// file is read and parsed by the underlying native libraries instead.
metadata : require ( './metadata.sjson' )
} } src/spokestacktray.tsx: 130
• การปฐมนิเทศ Optional : "left" | "right" (ค่าเริ่มต้น: "ซ้าย" )
ปุ่มถาดสามารถมุ่งเน้นที่ด้านใดด้านหนึ่งของหน้าจอ
src/spokestacktray.tsx: 235
• Optional PrimaryColor : string (ค่าเริ่มต้น: "#2F5BEA" )
สีนี้ใช้เพื่อธีมถาดและใช้ในปุ่มไมค์และฟองสบู่
src/spokestacktray.tsx: 240
• โปรไฟล์ Optional : PipelineProfile
โปรไฟล์ Spokestack Config เพื่อส่งผ่านไปยัง React-Native-Spokestack สิ่งเหล่านี้มีให้บริการจาก React-Native-Spokestack เริ่มต้นในเวอร์ชัน 4.0.0
หากระบุไฟล์กำหนดค่า wakeword ค่าเริ่มต้นจะเป็น TFLITE_WAKEWORD_NATIVE_ASR มิฉะนั้นค่าเริ่มต้นคือ 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
ใช้สิ่งนี้เท่าที่จำเป็นเพื่อรีเฟรชคำเตือนคำหลักและ NLU บนอุปกรณ์ (บังคับให้เขียนทับ) <SpokestackTray refreshModels={process.env.NODE_ENV !== 'production'} ... />
src/spokestacktray.tsx: 268
• SayGreeting Optional : boolean (ค่าเริ่มต้น: จริง )
ไม่ว่าจะพูดคำทักทายหรือแสดงฟองแชทด้วยข้อความทักทายแม้ว่าจะเปิดเสียงก็ตาม
src/spokestacktray.tsx: 274
• soundoffimage Optional : ReactNode (ค่าเริ่มต้น: (<image source = {soundoffimage} style = {{width: 30, ความสูง: 30}} />) )
แทนที่ภาพปิดเสียงโดยผ่านส่วนประกอบอิมเมจปฏิกิริยา
src/spokestacktray.tsx: 278
• SoundOnimage Optional : ReactNode (ค่าเริ่มต้น: (<image source = {SoundOnimage} style = {{width: 30, ความสูง: 30}} />) )
แทนที่เสียงบนภาพโดยผ่านส่วนประกอบอิมเมจปฏิกิริยา
src/spokestacktray.tsx: 276
• spokestackConfig Optional : Partial SpokestackConfig
ตัวเลือกส่งผ่านไปยังฟังก์ชัน spokestack.initialize () โดยตรงจาก React-Native-Spokestack ดู https://github.com/spokestack/react-native-spokestack สำหรับตัวเลือกที่มีอยู่
src/spokestacktray.tsx: 285
• StarTheight Optional : number (ค่าเริ่มต้น: 220 )
เริ่มต้นความสูงสำหรับถาด
src/spokestacktray.tsx: 287
• สไตล์ Optional : false | RegisteredStyle ViewStyle | Value | AnimatedInterpolation | WithAnimatedObject ViewStyle | WithAnimatedArray < false | ViewStyle | RegisteredStyle ViewStyle | RecursiveArray < false | ViewStyle | RegisteredStyle < ViewStyle >> | อ่านอย่างเดียว ( false | ViewStyle | RegisteredStyle ViewStyle ) []>>
เสาสไตล์นี้ถูกส่งผ่านไปยังภาชนะของถาด
src/spokestacktray.tsx: 289
• ttsformat Optional : TTSFormat (ค่าเริ่มต้น: ttsformat.text )
รูปแบบสำหรับข้อความที่ส่งไปยัง spokestack.synthesize
src/spokestacktray.tsx: 291
• เสียง Optional : string (ค่าเริ่มต้น: "การสาธิต-ชาย" )
กุญแจสำคัญสำหรับเสียงใน Spokestack TTS ส่งผ่านไปยัง Spokestack.Synthesize สิ่งนี้อาจเปลี่ยนแปลงได้ก็ต่อเมื่อคุณสร้างเสียงที่กำหนดเองโดยใช้บัญชีผู้ผลิต Spokestack ดู https://spokestack.io/pricing#maker หากไม่ได้ระบุจะใช้เสียง "สาธิต-ชาย" ฟรีของ Spokestack
src/spokestacktray.tsx: 298
• WAWWORD Optional : WakewordConfig
รุ่น NLU Tensorflow Lite (.tflite) สำหรับ wakeword
ทั้ง 3 ฟิลด์ยอมรับค่า 2 ประเภท
require หรือ import (เช่น model: require('./nlu.tflite') ))ดู https://spokestack.io/docs/concepts/wakeword-models เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ wakeword
SPOKESTACK เสนอไฟล์โมเดล WAWWORD ตัวอย่าง ("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'
} }นอกจากนี้คุณยังสามารถดาวน์โหลดโมเดลเหล่านี้ล่วงหน้าและรวมไว้จากไฟล์ท้องถิ่น หมายเหตุ: สิ่งนี้ต้องการการเปลี่ยนแปลงไปยัง Metro.Config.js ของคุณ สำหรับข้อมูลเพิ่มเติมโปรดดู "รวมไฟล์รุ่นในชุดแอปของคุณ" ใน readme.md
// ...
wakeword = { {
detect : require ( './detect.tflite' ) ,
encode : require ( './encode.tflite' ) ,
filter : require ( './filter.tflite' )
} } src/spokestacktray.tsx: 332
edittranscript Optional ( transcript ): string
แก้ไขการถอดเสียงก่อนการจำแนกประเภทและก่อนการตอบสนองของผู้ใช้จะปรากฏขึ้น
| ชื่อ | พิมพ์ |
|---|---|
transcript | string |
string
src/spokestacktray.tsx: 145
▸ จัดการกับ ( intent , slots? , utterance? ): [IntentResult](#IntentResult)
ฟังก์ชั่นนี้ใช้ความตั้งใจจาก NLU และส่งคืนวัตถุด้วยชื่อโหนดการสนทนาที่ไม่ซ้ำกัน (ที่คุณกำหนด) และพรอมต์ที่จะประมวลผลโดย TTS และพูด
หมายเหตุ: พรอมต์จะแสดงในฟองแชทเท่านั้นหากปิดเสียงแล้ว
| ชื่อ | พิมพ์ |
|---|---|
intent | string |
slots? | SpokestackNLUSlots |
utterance? | string |
[IntentResult](#IntentResult)
src/spokestacktray.tsx: 91
▸ onclose Optional (): void
เรียกว่าเมื่อใดก็ตามที่ถาดปิด
void
src/spokestacktray.tsx: 227
▸ Optional ( e ) void โมฆะ
เรียกว่าเมื่อใดก็ตามที่มีข้อผิดพลาดจาก Spokestack
| ชื่อ | พิมพ์ |
|---|---|
e | SpokestackErrorEvent |
void
src/spokestacktray.tsx: 229
▸ Onopen เสริม Optional ): void
เรียกว่าเมื่อใดก็ตามที่ถาดเปิด
void
src/spokestacktray.tsx: 231
• ข้อมูล Optional : any
ข้อมูลอื่น ๆ ที่คุณอาจต้องการเพิ่ม
src/spokestacktray.tsx: 64
• ไม่มีส่วน Optional : boolean
ตั้งค่าเป็น true เพื่อหยุดการจำแนกคำเตือนในระหว่างการเล่นพรอมต์
src/spokestacktray.tsx: 62
• โหนด : string
คีย์ที่ผู้ใช้กำหนดไว้เพื่อระบุว่าผู้ใช้อยู่ในการสนทนารวมอยู่ใน prop exitNodes หาก spokestack ไม่ควรฟังอีกหลังจากพูดพรอมต์
src/spokestacktray.tsx: 55
• พรอมต์ : string
จะถูกประมวลผลเป็นคำพูดเว้นแต่ถาดจะอยู่ในโหมดเงียบ
src/spokestacktray.tsx: 57
<SpokestackTray /> methodsวิธีการเหล่านี้สามารถใช้ได้จากองค์ประกอบ SpokestackTray ใช้ React Ref เพื่อเข้าถึงวิธีการเหล่านี้
const spokestackTray = useRef ( null )
// ...
< SpokestackTray ref = { spokestackTray }
// ...
spokestackTray . current . say ( 'Here is something for Spokestack to say' ) หมายเหตุ : ในกรณีส่วนใหญ่คุณควรโทรหา listen แทนที่จะ open
▸ เปิด (): void
เปิดถาดทักทาย (ถ้ามี) และฟัง
void
src/spokestacktray.tsx: 743
▸ ปิด (): void
ปิดถาดหยุดฟังและรีสตาร์ท Wakeword
void
src/spokestacktray.tsx: 754
▸ พูด ( input ): Promise void
ส่งผ่านอินพุตไปยัง spokestack.synthesize () เล่นเสียงและเพิ่มฟองคำพูด
| ชื่อ | พิมพ์ |
|---|---|
input | string |
Promise void
src/spokestacktray.tsx: 766
▸ AddBubble ( bubble ): void
เพิ่มฟอง (ระบบหรือผู้ใช้) ลงในอินเทอร์เฟซแชท
| ชื่อ | พิมพ์ |
|---|---|
bubble | Bubble |
void
src/spokestacktray.tsx: 799
• Isleft : boolean
src/ส่วนประกอบ/speechbubbles.tsx: 9
• ข้อความ : string
src/ส่วนประกอบ/speechbubbles.tsx: 8
▸ togglesilent (): Promise boolean
สลับโหมดเงียบ
Promise boolean
src/spokestacktray.tsx: 816
▸ ผู้ออก (): boolean
ส่งคืนว่าถาดอยู่ในโหมดเงียบ
boolean
src/spokestacktray.tsx: 828
ฟังก์ชั่นเหล่านี้มีให้บริการเป็นการส่งออกจาก React-Native-Spokestack-Tray
▸ ฟัง (): Promise void
บอกท่อพูด Spokestack เพื่อเริ่มฟัง ขออนุญาตฟังหากจำเป็น มันจะพยายามเริ่มท่อก่อนเปิดใช้งานหากยังไม่ได้เริ่ม ฟังก์ชั่นนี้จะไม่ทำอะไรเลยถ้าแอพอยู่ในพื้นหลัง
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
ส่งคืนไม่ว่าจะเป็นสโปว์สแม็กกำลังฟังอยู่
console . log ( `isListening: ${ await isListening ( ) } ` ) Promise boolean
src/index.ts: 19
▸ Const isinitialized (): Promise boolean
ส่งคืนไม่ว่าจะเริ่มต้นจากสโป้ค์
console . log ( `isInitialized: ${ await isInitialized ( ) } ` ) Promise boolean
src/index.ts: 27
▸ Const เริ่มต้น (): Promise boolean
ส่งคืนไม่ว่าจะเริ่มต้นไปป์ไลน์คำพูด
console . log ( `isStarted: ${ await isStarted ( ) } ` ) Promise boolean
src/index.ts: 35
▸ Const addeventListener ( eventType , listener , context? ): EmitterSubscription
ผูกกับเหตุการณ์ใด ๆ ที่ปล่อยออกมาโดยไลบรารีพื้นเมืองเหตุการณ์คือ: "รับรู้", "partial_recognize", "ข้อผิดพลาด", "เปิดใช้งาน", "ปิดใช้งาน" และ "หมดเวลา" ดูด้านล่างของ readme.md สำหรับคำอธิบายของเหตุการณ์
useEffect ( ( ) => {
const listener = addEventListener ( 'recognize' , onRecognize )
// Unsubscribe by calling remove when components are unmounted
return ( ) => {
listener . remove ( )
}
} , [ ] ) | ชื่อ | พิมพ์ |
|---|---|
eventType | string |
listener | ( event : any ) => void |
context? | Object |
EmitterSubscription
src/index.ts: 51
▸ Const remvereventListener ( eventType , listener ): void
ลบฟังเหตุการณ์
removeEventListener ( 'recognize' , onRecognize ) | ชื่อ | พิมพ์ |
|---|---|
eventType | string |
listener | (... args : any []) => any |
void
src/index.ts: 59
▸ Const removeAlLlisteners (): void
ลบผู้ฟังที่มีอยู่
componentWillUnmount ( ) {
removeAllListeners ( )
} void
src/index.ts: 69
ใช้ addEventListener() , removeEventListener() และ removeAllListeners() เพื่อเพิ่มและลบตัวจัดการเหตุการณ์ กิจกรรมทั้งหมดมีอยู่ในทั้ง iOS และ Android
| ชื่อ | ข้อมูล | คำอธิบาย |
|---|---|---|
| จำได้ | { transcript: string } | ยิงเมื่อใดก็ตามที่การจดจำคำพูดเสร็จสมบูรณ์ |
| partial_recognize | { transcript: string } | ยิงเมื่อใดก็ตามที่การถอดเสียงเปลี่ยนระหว่างการรู้จำเสียงพูด |
| เริ่ม | null | ถูกไล่ออกเมื่อไปป์ไลน์คำพูดเริ่มต้นขึ้น (ซึ่งเริ่มฟังคำเตือนหรือเริ่ม VAD) |
| หยุด | null | ถูกไล่ออกเมื่อไปป์ไลน์คำพูดหยุด |
| เปิดใช้งาน | null | ยิงเมื่อท่อพูดเปิดใช้งานไม่ว่าจะผ่าน VAD, wakeword หรือเมื่อโทร .activate() |
| ปิดใช้งาน | null | ถูกไล่ออกเมื่อการพูดไปป์ไลน์ปิดการใช้งาน |
| เล่น | { playing: boolean } | ยิงเมื่อการเล่น TTS เริ่มต้นและหยุด ดูฟังก์ชั่น speak() |
| การหมดเวลา | null | ถูกไล่ออกเมื่อท่อส่งออกเวลาออกเนื่องจากขาดการรับรู้ |
| ติดตาม | { message: string } | ถูกไล่ออกเพื่อติดตามข้อความ คำย้ำถูกกำหนดโดยตัวเลือก traceLevel |
| ข้อผิดพลาด | { error: string } | ถูกไล่ออกเมื่อมีข้อผิดพลาดใน Spokestack |
เมื่อเหตุการณ์ข้อผิดพลาดถูกเรียกใช้สัญญาใด ๆ ที่มีอยู่จะถูกปฏิเสธ
ฟังก์ชั่นยูทิลิตี้เหล่านี้ถูกใช้โดย Spokestack เพื่อตรวจสอบการอนุญาตไมโครโฟนใน iOS และ Android และอนุญาตการรู้จำเสียงพูดบน iOS
▸ Checkspeech (): Promise boolean
ฟังก์ชั่นนี้สามารถใช้เพื่อตรวจสอบว่าผู้ใช้ได้รับอนุญาตที่จำเป็นสำหรับการพูดหรือไม่ บน iOS สิ่งนี้รวมถึงไมโครโฟนและคำพูด บน Android จำเป็นต้องใช้ไมโครโฟนเท่านั้น
import { checkSpeech } from 'react-native-spokestack-tray'
// ...
const hasPermission = await checkSpeech ( ) Promise boolean
src/utils/permissions.ts: 78
▸ RequestSpeech (): Promise boolean
ฟังก์ชั่นนี้สามารถใช้เพื่อขออนุญาตจากการพูดที่จำเป็น บน iOS สิ่งนี้รวมถึงไมโครโฟนและคำพูด บน Android จำเป็นต้องใช้ไมโครโฟนเท่านั้น
หมายเหตุ: หากผู้ใช้ปฏิเสธในอดีตบน iOS ผู้ใช้จะต้องส่งไปยังการตั้งค่า
import { requestSpeech } from 'react-native-spokestack-tray'
// ...
const hasPermission = await requestSpeech ( ) Promise boolean
src/utils/permissions.ts: 106
มิกซ์