
مكون React الأصلي لإضافة 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-Spokestack بمشروعك:
يستفيد React-Spokestack من واجهات برمجة التطبيقات الجديدة نسبيًا متوفرة فقط في iOS 13+. تأكد من تعيين هدف النشر الخاص بك على iOS 13.
أولاً ، افتح Xcode وانتقل إلى Project -> معلومات لتعيين هدف نشر iOS إلى 13.0 أو أعلى.
أيضا ، اضبط النشر على 13.0 تحت الهدف -> عام -> معلومات النشر.
عندما تم تقديم Flipper إلى React Native ، تم تعيين بعض مسارات البحث في المكتبات لـ Swift. كانت هناك مشكلة طويلة الأمد مع مسارات البحث الافتراضية في المشاريع الأصلية React لأنه تمت إضافة مسار بحث لـ Swift 5.0 الذي منع أي مكتبات منصقة أخرى من استخدام واجهات برمجة التطبيقات متوفرة فقط في Swift 5.2 أو لاحقًا. Spokestack-IOS ، فإن اعتماد Spokestack-dokestack الاستفادة من 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. قم بإزالة أي خطوط متعلقة بالفلزاز في 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 الحالي لضمان عدم وجود تعارضات ، ثم قم بتثبيت القرون:
$ npx pod-installأضف ما يلي إلى info.plist لتمكين الأذونات. في 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 على إصلاح POD الخاص بهم لـ use_frameworks! ، يجب علينا تعطيل Flipper. لقد أزلنا بالفعل تبعيات Flipper من القرون أعلاه ، ولكن لا يزال هناك بعض التعليمات البرمجية في 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 ). ومع ذلك ، لا يتوفر 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) ، تحتاج أيضًا إلى إضافة الامتدادات اللازمة حتى يمكن بابل تضمين الملفات. للقيام بذلك ، قم بتحرير 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 /> الدعائم المكون • زر Optional : number (الافتراضي: 60 )
عرض (وارتفاع) زر الميكروفون
SRC/SPOKESTACKTRAY.TSX: 132
• ClientId : string
الرموز المميزة الخاصة بك التي تم إنشاؤها في حساب Spokestack الخاص بك على https://spokestack.io/account. قم بإنشاء حساب مجانًا ثم قم بإنشاء رمز رمزي. هذا من حقل "المعرف".
SRC/SpokestackTray.tsx: 74
• العملاء : string
الرموز المميزة الخاصة بك التي تم إنشاؤها في حساب Spokestack الخاص بك على https://spokestack.io/account. قم بإنشاء حساب مجانًا ثم قم بإنشاء رمز رمزي. هذا من الحقل "السري".
SRC/SpokestackTray.tsx: 81
• Optional مغلق : number (الافتراضي: 0 )
كم من الوقت للانتظار لإغلاق الدرج بعد التحدث (MS)
SRC/SPOKESTACKTRAY.TSX: 134
• Optional الاختياري : boolean
إظهار رسائل التصحيح من React-Dokestack
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
• الخروج 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 (افتراضي: صحيح )
اضبط هذا على خطأ لتعطيل Haptic الذي يتم لعبه كلما بدأت الدرج في الاستماع.
SRC/SpokestackTray.tsx: 171
• الكلمة الرئيسية Optional : KeywordConfig
التكوين للتعرف على الكلمات الرئيسية
تقبل حقول التصفية والكشف عن وترميز وبيانات التعريف نوعين من القيم.
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 ، ومفردات NLU (.txt)
جميع الحقول الثلاثة تقبل نوعين من القيم.
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" )
يتم استخدام هذا اللون لتصوير الدرج ويستخدم في زر MIC وفقاعات الكلام.
SRC/SpokestackTray.tsx: 240
• ملف تعريف Optional : PipelineProfile
ملف تعريف تكوين Spokestack لتمريره إلى رد الفعل-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
• توزيعات التحديث Optional : boolean
استخدم هذا بشكل متقطع لتحديث نماذج WakeWord و NLU و NLU على الجهاز (الكتابة فوق القوة). <SpokestackTray refreshModels={process.env.NODE_ENV !== 'production'} ... />
SRC/SPOKESTACKTRAY.TSX: 268
• saygreeting Optional : boolean (افتراضي: صحيح )
سواء كنت تتحدث عن التحية أو عرض فقاعة دردشة فقط مع رسالة التحية ، حتى لو كان الصوت قيد التشغيل.
SRC/SPOKESTACKTRAY.TSX: 274
• Soundoffimage Optional : ReactNode (افتراضي: (<صورة مصدر = {soundoffimage} style = {width: 30 ، الارتفاع: 30}} />) )
استبدل صورة الصوت عن طريق تمرير مكون صورة React
SRC/SpokestackTray.tsx: 278
• SoundOnimage Optional : ReactNode (افتراضي: (<صورة مصدر = {soundonimage} style = {width: 30 ، الارتفاع: 30}} />) )
استبدل الصوت على الصورة عن طريق تمرير مكون صورة React
SRC/SpokestackTray.tsx: 276
• SpokestackConfig Optional : Partial SpokestackConfig
تمرير خيارات مباشرة إلى وظيفة Spokestack.Initialize () من رد الفعل-spokestack. راجع https://github.com/spokestack/react-niater-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 >> | readonly ( false | ViewStyle | RegisteredStyle ViewStyle ) []>
يتم تمرير هذا الدعامة إلى حاوية الدرج
SRC/SPOKESTACKTRAY.TSX: 289
• TTSFORMAT Optional : TTSFormat (افتراضي: TTSFORMAT.TEXT )
تنسيق النص الذي تم تمريره إلى Spokestack.synthesize
SRC/SpokestackTray.tsx: 291
• صوت Optional : string (افتراضي: "Demo-Male" )
مفتاح لصوت في TTS Spokestack ، تم تمريره إلى Spokestack.Synthesize. قد لا يتم تغيير هذا إلا إذا قمت بإنشاء صوت مخصص باستخدام حساب صانع Spokestack. انظر https://spokestack.io/pricing#maker. إذا لم يتم تحديدها ، يتم استخدام صوت Spokestack المجاني "التجريبي".
SRC/SpokestackTray.tsx: 298
• كلمة Wakeword Optional : WakewordConfig
نماذج NLU TensorFlow Lite (.tflite) لكلمة الاستماع.
جميع الحقول الثلاثة تقبل نوعين من القيم.
require أو import (على سبيل المثال model: require('./nlu.tflite') ))راجع https://spokestack.io/docs/concepts/wakeword-models لمعرفة المزيد عن WakeWord
يقدم Spokestack ملفات نموذج Wakeword ("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
▸ Optional الاختياري (): void
تسمى كلما أغلقت الدرج
void
SRC/SpokestackTray.tsx: 227
▸ onerror Optional ( e ): void
يسمى كلما كان هناك خطأ من Spokestack
| اسم | يكتب |
|---|---|
e | SpokestackErrorEvent |
void
SRC/SpokestackTray.tsx: 229
▸ Optional OnoPen (): void
تسمى كلما فتحت الدرج
void
SRC/SPOKESTACKTRAY.TSX: 231
• بيانات Optional : any
أي بيانات أخرى قد ترغب في إضافتها
SRC/SpokestackTray.tsx: 64
• Optional nointerrupt : boolean
ضبط على true لإيقاف معرف WakeWord أثناء تشغيل المطالبة.
SRC/SpokestackTray.tsx: 62
• العقدة : string
يتضمن المفتاح المعرفة من قبل المستخدم الإشارة إلى مكان وجود المستخدم في المحادثة هذا في دعامة exitNodes إذا كان Spokestack يجب ألا يستمع مرة أخرى بعد قول المطالبة.
SRC/SpokestackTray.tsx: 55
• موجه : string
سيتم معالجتها في الكلام ما لم تكن الدرج في الوضع الصامت
SRC/SPOKESTACKTRAY.TSX: 57
<SpokestackTray /> طرق المكونهذه الطرق متوفرة من مكون 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
▸ Close (): void
أغلق الدرج ، توقف عن الاستماع ، وإعادة تشغيل كلمة الاستماع
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/مكونات/PleaseBubbles.tsx: 9
• النص : string
SRC/مكونات/خطاب PreechBbles.TSX: 8
▸ Togglesilent (): Promise boolean
تبديل الوضع الصامت
Promise boolean
SRC/SpokestackTray.tsx: 816
▸ issilent (): boolean
إرجاع ما إذا كانت الدرج في الوضع الصامت
boolean
SRC/SpokestackTray.tsx: 828
تتوفر هذه الوظائف كصادرات من React-Dokestack-Tray
▸ استمع (): Promise void
يروي خط أنابيب الكلام المتحدث لبدء الاستماع. يطلب أيضًا إذنًا للاستماع إذا لزم الأمر. سيحاول بدء خط الأنابيب قبل تنشيط إن لم يتم البدء بالفعل. لن تفعل هذه الوظيفة شيئًا إذا كان التطبيق في الخلفية.
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 iSlisting (): Promise boolean
يعود ما إذا كان Spokestack يستمع حاليًا
console . log ( `isListening: ${ await isListening ( ) } ` ) Promise boolean
src/index.ts: 19
▸ Const isinitialized (): Promise boolean
يعود ما إذا كان قد تمت تهيئة Spokestack
console . log ( `isInitialized: ${ await isInitialized ( ) } ` ) Promise boolean
src/index.ts: 27
▸ Const isstarted (): Promise boolean
يعود ما إذا كان خط أنابيب الكلام قد بدأ
console . log ( `isStarted: ${ await isStarted ( ) } ` ) Promise boolean
src/index.ts: 35
▸ Const addeventListener ( eventType ، listener ، context? ): EmitterSubscription
اربط بأي حدث تنبعث من المكتبات الأصلية ، الأحداث هي: "التعرف" ، "partial_rectoinize" ، "خطأ" ، "تنشيط" ، "إلغاء تنشيط" ، و "مهلة". انظر الجزء السفلي من 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 removeEventListener ( 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 | تم إطلاقه عندما يبدأ خط أنابيب الكلام (والذي يبدأ الاستماع إلى WakeWord أو يبدأ 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/الأذونات
▸ requestspeech (): Promise boolean
يمكن استخدام هذه الوظيفة لطلب الإذن اللازم للخطاب. على iOS ، يشمل ذلك كل من الميكروفون وعلاج الكلام. على Android ، هناك حاجة فقط للميكروفون.
ملاحظة: إذا انخفض المستخدم في الماضي على iOS ، فيجب إرسال المستخدم إلى الإعدادات.
import { requestSpeech } from 'react-native-spokestack-tray'
// ...
const hasPermission = await requestSpeech ( ) Promise boolean
SRC/utils/الأذونات
معهد ماساتشوستس للتكنولوجيا