
Настоящий нативный компонент React для добавления Spokestack в любое нативное приложение React.

Установите эту библиотеку с зависимостью со стороны сверстников
Одностроитель для установки всех зависимостей
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-Con-Spokestack использует относительно новые API, доступные только в iOS 13+. Обязательно установите цель развертывания на iOS 13.
Во -первых, откройте Xcode и перейдите в Project -> Информация, чтобы установить цель развертывания iOS на 13,0 или выше.
Кроме того, установите развертывание на 13.0 в Target -> General -> Информация о развертывании.
Когда Flipper был введен для реагирования нативного, некоторые пути поиска библиотеки были установлены для Swift. Была давняя проблема с путями поиска по умолчанию в нативных проектах React, потому что для Swift 5.0 был добавлен путь поиска, что помешало любым другими нативными библиотеками React использовать API, доступные только в Swift 5.2 или более поздней версии. Spokestack-IOIS, зависимость от реагируемого явления, используя эти API, и 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! в их поборах.
Для получения дополнительной информации об этой ошибке см. Facebook/React-родной#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 работает над исправлением своей стручки для use_frameworks! , мы должны отключить флиппер. Мы уже удалили зависимости 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 .
Смотрите нашу документацию 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 /> props компонента • Optional путовида : number (по умолчанию: 60 )
Ширина (и высота) кнопки микрофона
src/spokestacktray.tsx: 132
• ClientId : string
Ваши жетоны Spokestack сгенерировали в вашей учетной записи Spokestack по адресу https://spokestack.io/account. Создайте учетную запись бесплатно, а затем генерируйте токен. Это с поля "ID".
src/spokestacktray.tsx: 74
• Clientsecret : string
Ваши жетоны Spokestack сгенерировали в вашей учетной записи Spokestack по адресу https://spokestack.io/account. Создайте учетную запись бесплатно, а затем генерируйте токен. Это с «секретного» поля.
src/spokestacktray.tsx: 81
• Optional закрытый налет : number (по умолчанию: 0 )
Как долго ждать, чтобы закрыть поднос после выступления (MS)
src/spokestacktray.tsx: 134
• Optional отладка : boolean
Показать сообщения отладки от React-Con-Spokestack
src/spokestacktray.tsx: 136
• Optional продолжительность : number (по умолчанию: 500 )
Продолжительность для анимации лотка (MS)
src/spokestacktray.tsx: 138
• Optional смягчение : EasingFunction (по умолчанию: eareing.bezier (0,77, 0,41, 0,2, 0,84) )
Функция смягчения для анимации лотка
src/spokestacktray.tsx: 140
• Optional выходы : string []
Все узлы в этом массиве должны закончить разговор и закрыть поднос
src/spokestacktray.tsx: 150
• Optional семейство : string
Шрифт для использования для «прослушивания ...», «Загрузка ...» и текст пузыря чата.
src/spokestacktray.tsx: 155
• Optional GradientColors : string [] (по умолчанию: ["#61FAE9", "#2F5BEA"] )
Цвета для линейного градиента, показанного при прослушивании, могут быть любым количеством цветов (рекомендуется: 2-3)
src/spokestacktray.tsx: 160
• Optional приветствие : boolean (по умолчанию: ложь )
Приветствовать ли пользователя с приветственным сообщением, когда откроется лоток. ПРИМЕЧАНИЕ. handleIntent должно ответить на намерение «приветствие».
src/spokestacktray.tsx: 166
• Optional тактичный : boolean (по умолчанию: TRUE )
Установите это на false, чтобы отключить тактику, которое воспроизводится всякий раз, когда поднос начинает слушать.
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
• Optional Minheight : number (по умолчанию: 170 )
Минимальная высота для подноса
src/spokestacktray.tsx: 223
• nlu : NLUConfig
Модель NLU Tensorflow Lite (.tflite), метаданные JSON и словарь 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" )
Этот цвет используется для тематического подноса и используется в кнопке MIC и речевых пузырьках.
src/spokestacktray.tsx: 240
• Optional профиль : PipelineProfile
Профиль конфигурации Spokestack для прохождения в React-Contive-Spokestack. Они доступны от React-C-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, Keyword и NLU на устройстве (PIRCE RITE). <SpokestackTray refreshModels={process.env.NODE_ENV !== 'production'} ... />
src/spokestacktray.tsx: 268
• Optional Saygreeting : boolean (по умолчанию: True )
Говорить ли приветствие или отображать только пузырь чата с приветствием, даже если звук включен.
src/spokestacktray.tsx: 274
• Optional SoundOffImage : ReactNode (по умолчанию: (<image source = {soundoffimage} style = {{width: 30, высота: 30}} />) )
Замените изображение звука, передавая компонент изображения React
src/spokestacktray.tsx: 278
• Optional SoundonImage : ReactNode (по умолчанию: (<Image Source = {soundonimage} style = {{width: 30, высота: 30}} />) )
Замените звук на изображении, передавая компонент изображения React
src/spokestacktray.tsx: 276
• Optional SpokestackConfig : Partial SpokestackConfig
Пропустите параметры непосредственно в функцию spokestack.initialize () из React-Con-Spokestack. См. Https://github.com/spokestack/react-native-pokestack для доступных вариантов.
src/spokestacktray.tsx: 285
• Optional StarTheight : 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
• Optional TTSFormat : TTSFormat (по умолчанию: ttsformat.text )
Формат текста, переданный в Spokestack.synthesize
src/spokestacktray.tsx: 291
• Optional голос : string (по умолчанию: «Демо-мужчина» )
Ключ для голоса в Spokestack TTS, перешел в spokestack.synthesize. Это может быть изменено только в том случае, если вы создали пользовательский голос, используя учетную запись Spokestack Maker. Смотрите https://spokestack.io/pricing#maker. Если не указано, используется бесплатный голос Spokestack «демонстрация».
src/spokestacktray.tsx: 298
• Optional WakeWord : WakewordConfig
Модели NLU Tensorflow Lite (.tflite) для WakeWord.
Все 3 поля принимают 2 типа значений.
require или import (например, model: require('./nlu.tflite') )Смотрите https://spokestack.io/docs/concepts/wakeword-dels, чтобы узнать больше о 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
▸ Optional EditTranscript ( transcript ): string
Отредактируйте стенограмму перед классификацией и до того, как будет показан пузырь ответа пользователя.
| Имя | Тип |
|---|---|
transcript | string |
string
src/spokestacktray.tsx: 145
▸ Handletent ( intent , slots? utterance? ): [IntentResult](#IntentResult)
Эта функция получает намерение от NLU и возвращает объект с уникальным именем узла разговора (которое вы определяете) и подсказкой, которая будет обработана TTS и разговорами.
Примечание. Подсказка отображается только в чате только в том случае, если звук был отключен.
| Имя | Тип |
|---|---|
intent | string |
slots? | SpokestackNLUSlots |
utterance? | string |
[IntentResult](#IntentResult)
src/spokestacktray.tsx: 91
▸ Optional onclose (): void
Вызывается всякий раз, когда лоток закрывается
void
src/spokestacktray.tsx: 227
▸ Optional Onerror ( 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 .
▸ Open (): void
Откройте поднос, приветствуйте (если применимо) и послушайте
void
src/spokestacktray.tsx: 743
▸ Close (): 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
• Остров : boolean
SRC/Components/Speechbubs.tsx: 9
• Текст : string
SRC/Components/Speechbubs.tsx: 8
▸ ToggleSilent (): Promise boolean
Переключить молчаливый режим
Promise boolean
src/spokestacktray.tsx: 816
▸ issilent (): boolean
Возвращает, находится ли поднос в безмолвом режиме
boolean
src/spokestacktray.tsx: 828
Эти функции доступны в качестве экспорта из дрейва с реагирующим явлением
▸ Слушай (): 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
Возвращает, слушает ли 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_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 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/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
Грань