
React NativeアプリにSpokestackを追加するためのReactネイティブコンポーネント。

ピア依存関係を使用してこのライブラリをインストールします
すべての依存関係をインストールするための1ライナー
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は、iOS 13+でのみ利用可能な比較的新しいAPIを使用しています。展開目標をiOS 13に設定してください。
まず、Xcodeを開いてProject-> Infoに移動して、iOS展開目標を13.0以降に設定します。
また、ターゲット - >一般 - >展開情報の下で展開を13.0に設定します。
FlipperがNativeの反応に導入されたとき、いくつかのライブラリ検索パスがSwiftに設定されました。 Reactネイティブプロジェクトのデフォルトの検索パスには長年の問題がありました。これにより、Swift 5.0の検索パスが追加されたため、他のReactネイティブライブラリがSwift 5.2以降でのみ利用可能なAPIを使用できなくなりました。 SpokeStack-IOS、React-Native-SpokeStackの依存性はこれらのAPIを利用し、Xcodeは構築に失敗します。
幸いなことに、修正はかなり簡単です。ターゲットに移動します - > [設定]をビルドし、「ライブラリ検索パス」を検索します。
""$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)""リストから削除します。
pod installを実行する前に、次の編集を必ず作成してください。
platform :ios , '13.0'また、 use_frameworks! Swiftで書かれた依存関係をサポートするためのPodfileで。
target 'SpokestackExample' do
use_frameworks!
#...とりあえず、 use_frameworks!フリッパーでは動作しないため、フリッパーを無効にする必要もあります。ポッドファイルのフリッパー関連の線を削除します。反応ネイティブ0.63.2では、彼らは次のように見えます:
# X Remove or comment out these lines X
# use_flipper!
# post_install do |installer|
# flipper_post_install(installer)
# end
# XX React-Native-Permissionsを使用して、マイクの許可(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-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 and podsフォルダーを削除して、競合がないことを確認してから、ポッドをインストールします。
$ npx pod-install情報に以下を追加して、許可を有効にします。 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! 、フリッパーを無効にする必要があります。上記のポッドからフリッパー依存関係を既に削除していますが、appdelegate.mにはフリッパーをインポートするコードが残っています。これを修正するには2つの方法があります。
-DFB_SONARKIT_ENABLED=1削除します。私たちの例アプリでは、オプション1を実行し、将来機能している場合に備えてフリッパーコードに残しました。
# 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 ];
// ... この例では、システムが提供するASR( AndroidSpeechRecognizerおよびAppleSpeechRecognizer )を使用しています。ただし、 AndroidSpeechRecognizer 、100%のデバイスでは使用できません。アプリが組み込みの音声認識がないデバイスをサポートしている場合は、 profile Propを使用してprofile SpokeStackプロファイルに設定することにより、SpokeStack ASRを使用します。
詳細については、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に必要な権限を追加します。最初の許可はすでにそこにあることがよくあります。 2つ目は、マイクを使用するために必要です。
<!-- 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 />コンポーネントプロップ • Optional buttonwidth : number (default: 60 )
マイクボタンの幅(および高さ)
SRC/SPOKESTACKTRAY.TSX:132
• ClientID : string
https://spokestack.io/accountのSpokestackアカウントで生成されたSpokeStackトークン。無料でアカウントを作成し、トークンを生成します。これは「ID」フィールドからのものです。
SRC/SPOKESTACKTRAY.TSX:74
• clientsecret : string
https://spokestack.io/accountのSpokestackアカウントで生成されたSpokeStackトークン。無料でアカウントを作成し、トークンを生成します。これは「秘密」フィールドからのものです。
SRC/SPOKESTACKTRAY.TSX:81
• Optional closedelay : number (default: 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
• Optional exitnodes : string []
この配列内のすべてのノードは会話を終了し、トレイを閉じる必要があります
SRC/SPOKESTACKTRAY.TSX:150
• Optional fontfamily : string
「リスニング...」、「ロード...」、およびチャットバブルテキストに使用するフォント。
SRC/SPOKESTACKTRAY.TSX:155
• Optional GradientColors : string [](default: ["#61fae9"、 "#2f5bea"] ))
リスニング時に表示される線形勾配の色は、任意の数の色になります(推奨:2-3)
SRC/SPOKESTACKTRAY.TSX:160
• Optional挨拶: boolean (デフォルト: false )
トレイが開いたときにウェルカムメッセージでユーザーに挨拶するかどうか。注: 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') )NLUの詳細については、https://spokestack.io/docs/concepts/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プライマリカラー: string (デフォルト: "#2f5bea" )
この色はトレイのテーマに使用され、マイクボタンと音声泡で使用されます。
SRC/SPOKESTACKTRAY.TSX:240
• Optionalプロファイル: PipelineProfile
React-Native Spokestackに渡すSpokeStack構成プロファイル。これらは、バージョン4.0.0から始まるReact-Native-Spokestackから入手できます。
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 refreshmodels : boolean
これを控えめに使用して、デバイス上のウェイクワード、キーワード、およびNLUモデルを更新します(フォース上書き)。 <SpokestackTray refreshModels={process.env.NODE_ENV !== 'production'} ... />
SRC/SPOKESTACKTRAY.TSX:268
• Optional saygreeting : boolean (デフォルト: true )
挨拶を話すか、音が点灯していても、挨拶メッセージでチャットバブルのみを表示するかどうか。
SRC/SPOKESTACKTRAY.TSX:274
• Optional soundoffimage : ReactNode (default: (<image source = {soundoffimage} style = {{width:30、height:30}} />) )
React画像コンポーネントを渡して、サウンドオフ画像を交換します
SRC/SPOKESTACKTRAY.TSX:278
• Optional soundOnimage : ReactNode (default: (<image source = {soundonimage} style = {{width:30、height:30}} />) )
React画像コンポーネントを渡すことで、画像上の音を交換します
SRC/SPOKESTACKTRAY.TSX:276
• Optional SpokestackConfig : Partial SpokestackConfig
OptionsをspokeStack.Initialize()react-native-spokestackの関数に直接渡します。利用可能なオプションについては、https://github.com/spokestack/react-native-spokestackを参照してください。
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 (default: 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ウェイクワード: WakewordConfig
Wakeword用のNLU Tensorflow Liteモデル(.tflite)。
3つのフィールドはすべて、2種類の値を受け入れます。
requireまたはimportによって取得されたソースオブジェクト(例model: require('./nlu.tflite') )https://spokestack.io/docs/concepts/wakeword-modelsを参照して、Wakewordの詳細をご覧ください
SpokeStackには、サンプルウェイクワードモデルファイル(「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編集( transcript ): string
分類前とユーザーの応答バブルが表示される前に、トランスクリプトを編集します。
| 名前 | タイプ |
|---|---|
transcript | string |
string
SRC/SPOKESTACKTRAY.TSX:145
heanderIntent ( 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
option Optional onopen (): void
トレイが開いたときはいつでも呼び出されます
void
SRC/SPOKESTACKTRAY.TSX:231
• Optionalデータ: any
追加したい他のデータ
SRC/SPOKESTACKTRAY.TSX:64
• Optional nointerrupt : boolean
プロンプトの再生中にウェイクワード認識装置を停止するようにtrueに設定します。
SRC/SPOKESTACKTRAY.TSX:62
•ノード: string
ユーザーが会話のどこにいるかを示すユーザー定義のキーは、SpokeStackがプロンプトを言った後に再度聞いてはいけない場合にexitNodes Propにこれを含めます。
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' )注:ほとんどの場合、 open代わりに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/components/speechbubbles.tsx:9
•テキスト: string
src/components/speechbubbles.tsx:8
togglesilent (): Promise boolean
サイレントモードを切り替えます
Promise boolean
SRC/SPOKESTACKTRAY.TSX:816
asilent (): boolean
トレイがサイレントモードであるかどうかを返します
boolean
SRC/SPOKESTACKTRAY.TSX:828
これらの機能は、React-Native-Spokestack-Trayからの輸出として利用できます
promise void Promise
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 Const addeventlistener ( eventType 、 listener 、 context? ): EmitterSubscription
ネイティブライブラリによって放出されたすべてのイベントにバインドされています。イベントは「認識」、「partial_recognize」、「error」、「activate」、 "deactivate"、および "Timeout]です。イベントの説明については、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 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_ecognize | { transcript: string } | 音声認識中に転写産物が変化するたびに発射されました。 |
| 始める | null | 音声パイプラインが開始されたときに解雇されました(ウェイクワードの聴きを開始するか、VADを開始します)。 |
| 停止 | null | 音声パイプラインが停止すると発射されます。 |
| 活性化 | null | Speech Pipelineが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
mit