
Um componente nativo react para adicionar porta -voz a qualquer aplicativo nativo do React.

Instale esta biblioteca com as dependências de colegas
Uma linha única para instalar todas as dependências
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-feedbackEm seguida, siga as instruções para cada plataforma para vincular a S-Spokestack React-Native ao seu projeto:
O React-Native-Spokestack faz uso de APIs relativamente novas disponíveis apenas no iOS 13+. Certifique -se de definir sua meta de implantação para o iOS 13.
Primeiro, abra o Xcode e vá para o Projeto -> Informações para definir o destino de implantação do iOS como 13.0 ou superior.
Além disso, defina a implantação para 13.0 em Target -> Geral -> Informações de implantação.
Quando o Flipper foi introduzido para reagir nativo, alguns caminhos de pesquisa da biblioteca foram definidos para Swift. Houve um problema de longa data com os caminhos de pesquisa padrão em projetos nativos do React, porque um caminho de pesquisa foi adicionado para o Swift 5.0, o que impedia que outras bibliotecas nativas do React usassem APIs disponíveis apenas no Swift 5.2 ou posterior. Spokestack-Iios, uma dependência da Spokestack React-Native faz uso dessas APIs e Xcode não conseguirá construir.
Felizmente, a correção é bastante simples. Vá para o seu destino -> Construa configurações e pesquise "caminhos de pesquisa da biblioteca".
Remova ""$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)"" da lista.
Antes de executar pod install , faça as seguintes edições.
platform :ios , '13.0' Também precisamos usar use_frameworks! Em nosso poderoso, para apoiar dependências escritas no Swift.
target 'SpokestackExample' do
use_frameworks!
#... Por enquanto, use_frameworks! Não funciona com Flipper, então também precisamos desativar o Flipper. Remova todas as linhas relacionadas a Flipper no seu PODFILE. No React Native 0.63.2, eles se parecem com o seguinte:
# X Remove or comment out these lines X
# use_flipper!
# post_install do |installer|
# flipper_post_install(installer)
# end
# XX Utilizamos o React-native-Permissions para verificar e solicitar a permissão do microfone (iOS e Android) e a permissão de reconhecimento de fala (somente iOS). Esta biblioteca separa cada permissão em seu próprio pod para evitar a inflação do seu aplicativo com código que você não usa. Adicione os seguintes pods ao seu poderoso:
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" O React Native 0.64.0 quebrou todos os projetos usando use_frameworks! em seus podfiles.
Para mais informações sobre este bug, consulte o Facebook/React-nativo#31149.
Para alternar esta edição, adicione o seguinte ao seu 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 Remova sua pasta Podfile.lock e Pods existentes para garantir conflitos e, em seguida, instale os pods:
$ npx pod-installAdicione o seguinte à sua info.plista para ativar as permissões. No Xcode, verifique também que seu destino de implantação do iOS está definido como 13.0 ou superior.
< 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 > Enquanto o Flipper trabalha para consertar seu pod para use_frameworks! , devemos desativar a flipper. Já removemos as dependências de flipper das vagens acima, mas ainda há algum código no appDelegate.m que importa Flipper. Existem duas maneiras de consertar isso.
-DFB_SONARKIT_ENABLED=1 de sinalizadores.Em nosso aplicativo de exemplo, fizemos a opção 1 e deixamos no código Flipper, caso eles o faça funcionar no futuro e possamos adicioná -lo novamente.
# import < AVFoundation/AVFoundation.h > Defina a categoria de audiosação. Existem várias configurações que funcionam.
A seguir, é apresentada uma sugestão que deve se encaixar na maioria dos casos de uso:
- ( 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 ];
// ... O uso de exemplo usa o ASRS fornecido pelo sistema ( AndroidSpeechRecognizer e AppleSpeechRecognizer ). No entanto, AndroidSpeechRecognizer não está disponível em 100% dos dispositivos. Se o seu aplicativo suportar um dispositivo que não tenha reconhecimento de fala interno, use a porta-voz ASR, definindo o profile em um perfil de porta-voz usando o suporte profile .
Consulte nossa documentação do ASR para obter mais informações.
// ...
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 " ) Adicione as permissões necessárias ao seu AndroidManifest.xml . A primeira permissão já existe. O segundo é necessário para usar o microfone.
<!-- 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'
} }
/>
)
} Para incluir arquivos de modelo localmente no seu aplicativo (em vez de baixá -los de uma CDN), você também precisa adicionar as extensões necessárias para que os arquivos possam ser incluídos por Babel. Para fazer isso, edite seu 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' ] )
}
}Em seguida, inclua arquivos de modelo usando objetos de origem:
< 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' )
} }
/> Isso não é necessário. Passe URLs remotos para as mesmas opções de configuração e os arquivos serão baixados e armazenados em cache ao initialize pela primeira vez.
Consulte o guia contribuinte para aprender a contribuir para o repositório e o fluxo de trabalho de desenvolvimento.
<SpokestackTray /> Adexos de componentes • largura de botão Optional : number (padrão: 60 )
Largura (e altura) do botão de microfone
src/spokestacktray.tsx: 132
• ClientId : string
Seus tokens de porta -voz gerados em sua conta de porta -voz em https://spokestack.io/account. Crie uma conta para GRATUITO e gerar um token. Este é do campo "ID".
src/spokestacktray.tsx: 74
• CLIENTECRET : string
Seus tokens de porta -voz gerados em sua conta de porta -voz em https://spokestack.io/account. Crie uma conta para GRATUITO e gerar um token. Este é do campo "secreto".
src/spokestacktray.tsx: 81
• Optional fechado : number (padrão: 0 )
Quanto tempo para esperar para fechar a bandeja depois de falar (ms)
src/spokestacktray.tsx: 134
• Debug Optional : boolean
Mostrar mensagens de depuração da S-Spokestack React-Native
src/spokestacktray.tsx: 136
• Duração Optional : number (Padrão: 500 )
Duração para a animação da bandeja (ms)
src/spokestacktray.tsx: 138
• Efachenting Optional : EasingFunction (Padrão: Easing.Bezier (0,77, 0,41, 0,2, 0,84) ))
Função de facilidade para a animação da bandeja
src/spokestacktray.tsx: 140
• Exitnodes Optional : string []
Todos os nós nesta matriz devem terminar a conversa e fechar a bandeja
src/spokestacktray.tsx: 150
• Fontfamília Optional : string
Fonte para usar para "ouvir ...", "carregar ..." e conversar com texto bolha.
src/spokestacktray.tsx: 155
• GradientColors Optional : string [] (padrão: ["#61FAE9", "#2F5Bea"] ))
Cores para o gradiente linear mostrado quando a escuta podem ser qualquer número de cores (recomendado: 2-3)
src/spokestacktray.tsx: 160
• Greet Optional : boolean (padrão: false )
Se deve cumprimentar o usuário com uma mensagem de boas -vindas quando a bandeja abrir. NOTA: handleIntent deve responder à intenção de "saudação".
src/spokestacktray.tsx: 166
• Capto Optional : boolean (padrão: true )
Defina isso como falso para desativar o háptico que é tocado sempre que a bandeja começar a ouvir.
src/spokestacktray.tsx: 171
• Palavra -chave Optional : KeywordConfig
Configuração para reconhecimento de palavras -chave
Os campos filtro, detectar, codificar e metadados aceitam 2 tipos de valores.
require ou import (por exemplo model: require('./nlu.tflite') ))Consulte https://www.spokestack.io/docs/concepts/keywords para saber mais sobre o reconhecimento de palavras -chave.
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'
} }Você também pode baixar modelos com antecedência e incluí -los em arquivos locais. NOTA: Isso requer uma alteração no seu metro.config.js. Para mais informações, consulte "Incluindo arquivos de modelo em seu pacote de aplicativos" no 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' )
} }A configuração de palavras -chave também aceita um campo de classes para quando os metadados não são especificados.
// ...
keyword = { {
detect : require ( './detect.tflite' ) ,
encode : require ( './encode.tflite' ) ,
filter : require ( './filter.tflite' ) ,
classes : [ 'one' , 'two' , 'three]
} } src/spokestacktray.tsx: 221
• MinHeight Optional : number (Padrão: 170 )
Altura mínima para a bandeja
src/spokestacktray.tsx: 223
• NLU : NLUConfig
O modelo NLU Tensorflow Lite (.tflite), JSON Metadata e Vocabulário NLU (.txt)
Todos os 3 campos aceitam 2 tipos de valores.
require ou import (por exemplo model: require('./nlu.tflite') ))Consulte https://spokestack.io/docs/concepts/nlu para saber mais sobre a NLU.
// ...
nlu = { {
model : 'https://somecdn.com/nlu.tflite' ,
vocab : 'https://somecdn.com/vocab.txt' ,
metadata : 'https://somecdn.com/metadata.json'
} }Você também pode passar os arquivos locais. NOTA: Isso requer uma alteração no seu metro.config.js. Para mais informações, consulte "Incluindo arquivos de modelo em seu pacote de aplicativos" no 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
• Orientação Optional : "left" | "right" (padrão: "Esquerda" )
O botão da bandeja pode ser orientado em ambos os lados da tela
src/spokestacktray.tsx: 235
• Primário Optional : string (padrão: "#2f5bea" )
Essa cor é usada para tema a bandeja e é usada no botão Mic e bolhas de fala.
src/spokestacktray.tsx: 240
• Perfil Optional : PipelineProfile
O perfil de configuração da porta-voz a passar para a reação-spokestack. Estes estão disponíveis na S-Spokestack React-Native a partir da versão 4.0.0.
Se os arquivos de configuração do Wakeword forem especificados, o padrão será TFLITE_WAKEWORD_NATIVE_ASR . Caso contrário, o padrão é 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
Use isso com moderação com modelos para atualizar os modelos Wakeword, Palavra -chave e NLU no dispositivo (Substituição de Force). <SpokestackTray refreshModels={process.env.NODE_ENV !== 'production'} ... />
src/spokestacktray.tsx: 268
• SayGreeting Optional : boolean (padrão: true )
Seja para falar a saudação ou exibir apenas uma bolha de bate -papo com a mensagem Greet, mesmo que o som esteja ligado.
src/spokestacktray.tsx: 274
• Optional SoundOffImage : ReactNode (padrão: (<Image Source = {SoundOffImage} style = {{Width: 30, Height: 30}} />) )
Substitua a imagem Off Off, passando um componente de imagem do React
src/spokestacktray.tsx: 278
• SoundOnImage Optional : ReactNode (padrão: (<imagem fonte = {SoundonImage} style = {{width: 30, altura: 30}} />) )
Substitua o som na imagem passando um componente de imagem do React
src/spokestacktray.tsx: 276
• SpokestackConfig Optional : Partial SpokestackConfig
Passe as opções diretamente para a função Spokestack.Initialize () da S-Spokestack React-Native. Consulte https://github.com/spokestack/react-native-native-spokestack para opções disponíveis.
src/spokestacktray.tsx: 285
• Starthepththept Optional : number (Padrão: 220 )
Altura de partida para bandeja
src/spokestacktray.tsx: 287
• Estilo Optional : false | RegisteredStyle ViewStyle | Value | AnimatedInterpolation | WithAnimatedObject ViewStyle | WithAnimatedArray < false | ViewStyle | RegisteredStyle ViewStyle | RecursiveArray < false | ViewStyle | RegisteredStyle < ViewStyle >> | ReadOnly ( false | ViewStyle | RegisteredStyle ViewStyle ) []>
Este suporte de estilo é passado para o recipiente da bandeja
src/spokestacktray.tsx: 289
• TTSFormat Optional : TTSFormat (padrão: ttsFormat.text )
O formato para o texto passou para a porta -voz.Synthesize
src/spokestacktray.tsx: 291
• Voz Optional : string (padrão: "Demo-Male" )
Uma chave para uma voz na porta -voz TTS, passada para a porta -voz.Synthesize. Isso só pode ser alterado se você tiver criado uma voz personalizada usando uma conta do Spokestack Maker. Veja https://spokestack.io/pricing#maker. Se não estiver especificado, a voz gratuita de "demonstração" da porta-voz é usada.
src/spokestacktray.tsx: 298
• Wakeword Optional : WakewordConfig
Os modelos NLU Tensorflow Lite (.tflite) para Wakeword.
Todos os 3 campos aceitam 2 tipos de valores.
require ou import (por exemplo model: require('./nlu.tflite') ))Veja https://spokestack.io/docs/concepts/wakeword-models para saber mais sobre o Wakeword
Spokestack oferece amostra de arquivos de modelo 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'
} }Você também pode baixar esses modelos com antecedência e incluí -los em arquivos locais. NOTA: Isso requer uma alteração no seu metro.config.js. Para mais informações, consulte "Incluindo arquivos de modelo em seu pacote de aplicativos" no readme.md.
// ...
wakeword = { {
detect : require ( './detect.tflite' ) ,
encode : require ( './encode.tflite' ) ,
filter : require ( './filter.tflite' )
} } src/spokestacktray.tsx: 332
▸ EditTranscript Optional ( transcript ): string
Edite a transcrição antes da classificação e antes que a bolha de resposta do usuário seja mostrada.
| Nome | Tipo |
|---|---|
transcript | string |
string
src/spokestacktray.tsx: 145
▸ HandleIntent ( intent , slots? utterance? ): [IntentResult](#IntentResult)
Essa função pega uma intenção da NLU e retorna um objeto com um nome de nó de conversa exclusivo (que você define) e um prompt para ser processado por TTS e falado.
Nota: O prompt é mostrado apenas em uma bolha de bate -papo se o som tiver sido desligado.
| Nome | Tipo |
|---|---|
intent | string |
slots? | SpokestackNLUSlots |
utterance? | string |
[IntentResult](#IntentResult)
src/spokestacktray.tsx: 91
▸ Optional onclose (): void
Chamado sempre que a bandeja fechou
void
src/spokestacktray.tsx: 227
▸ Optional OnError ( e ): void
Chamado sempre que há um erro da porta -voz
| Nome | Tipo |
|---|---|
e | SpokestackErrorEvent |
void
src/spokestacktray.tsx: 229
▸ Optional Onopen (): void
Chamado sempre que a bandeja se abriu
void
src/spokestacktray.tsx: 231
• Dados Optional : any
Quaisquer outros dados que você queira adicionar
src/spokestacktray.tsx: 64
• Não -interrupção Optional : boolean
Defina como true para interromper o reconhecimento do Wakeword durante a reprodução do prompt.
src/spokestacktray.tsx: 62
• Nó : string
Uma chave definida pelo usuário para indicar onde o usuário está na conversa inclui isso no suporte exitNodes se a porta-voz não deve ouvir novamente depois de dizer o prompt.
src/spokestacktray.tsx: 55
• Prompt : string
Será processado em fala, a menos que a bandeja esteja no modo silencioso
src/spokestacktray.tsx: 57
<SpokestackTray />Esses métodos estão disponíveis no componente Spokestacktray. Use um React Ref para acessar esses métodos.
const spokestackTray = useRef ( null )
// ...
< SpokestackTray ref = { spokestackTray }
// ...
spokestackTray . current . say ( 'Here is something for Spokestack to say' ) Nota : Na maioria dos casos, você deve ligar listen em vez de open .
▸ Open (): void
Abra a bandeja, receita (se aplicável) e ouça
void
src/spokestacktray.tsx: 743
▸ Close (): void
Feche a bandeja, pare de ouvir e reinicie o Wakeword
void
src/spokestacktray.tsx: 754
▸ Diga ( input ): Promise void
Passa a entrada para a porta -voz.synthesize (), toca o áudio e adiciona uma bolha de fala.
| Nome | Tipo |
|---|---|
input | string |
Promise void
src/spokestacktray.tsx: 766
▸ AddBubble ( bubble ): void
Adicione uma bolha (sistema ou usuário) à interface de bate -papo
| Nome | Tipo |
|---|---|
bubble | Bubble |
void
src/spokestacktray.tsx: 799
• Isleft : boolean
SRC/Components/Speechbubbles.tsx: 9
• Texto : string
SRC/Components/Speechbubbles.tsx: 8
▸ Togglesilent (): Promise boolean
Alternar o modo silencioso
Promise boolean
src/spokestacktray.tsx: 816
▸ ISSILENT (): boolean
Retorna se a bandeja está no modo silencioso
boolean
src/spokestacktray.tsx: 828
Essas funções estão disponíveis como exportações de transferência de react-native-spokestack
▸ Ouça (): Promise void
Diga ao Pipeline de Speech Speech para começar a ouvir. Também solicita permissão para ouvir, se necessário. Ele tentará iniciar o oleoduto antes de ativar se ainda não estiver iniciado. Esta função não fará nada se o aplicativo estiver em segundo plano.
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
Retorna se a porta -voz está ouvindo atualmente
console . log ( `isListening: ${ await isListening ( ) } ` ) Promise boolean
src/index.ts: 19
▸ Const isinitialized (): Promise boolean
Retorna se a porta -porta foi inicializada
console . log ( `isInitialized: ${ await isInitialized ( ) } ` ) Promise boolean
src/index.ts: 27
▸ Const ISStarted (): Promise boolean
Retorna se o pipeline de fala foi iniciado
console . log ( `isStarted: ${ await isStarted ( ) } ` ) Promise boolean
src/index.ts: 35
Const eventType listener context? EmitterSubscription
Vincular a qualquer evento emitido pelas bibliotecas nativas Os eventos são: "reconhecer", "parcial_recognize", "error", "ativar", "desativar" e "timeout". Veja a parte inferior do readme.md para descrições dos eventos.
useEffect ( ( ) => {
const listener = addEventListener ( 'recognize' , onRecognize )
// Unsubscribe by calling remove when components are unmounted
return ( ) => {
listener . remove ( )
}
} , [ ] ) | Nome | Tipo |
|---|---|
eventType | string |
listener | ( event : any ) => void |
context? | Object |
EmitterSubscription
src/index.ts: 51
▸ Const RemoveveEventListener ( eventType , listener ): void
Remova um ouvinte de evento
removeEventListener ( 'recognize' , onRecognize ) | Nome | Tipo |
|---|---|
eventType | string |
listener | (... args : any []) => any |
void
src/index.ts: 59
▸ Const RemoveAlLlisteners (): void
Remova quaisquer ouvintes existentes
componentWillUnmount ( ) {
removeAllListeners ( )
} void
src/index.ts: 69
Use addEventListener() , removeEventListener() e removeAllListeners() para adicionar e remover os manipuladores de eventos. Todos os eventos estão disponíveis no iOS e no Android.
| Nome | Dados | Descrição |
|---|---|---|
| reconhecer | { transcript: string } | Disponível sempre que o reconhecimento de fala é concluído com êxito. |
| parcial_recognize | { transcript: string } | Disparado sempre que a transcrição muda durante o reconhecimento da fala. |
| começar | null | Disponível quando o pipeline de fala é iniciado (que começa a ouvir o Wakeword ou inicia o VAD). |
| parar | null | Disparado quando o pipeline de fala para. |
| ativar | null | Disponível quando o pipeline de fala é ativado, através do VAD, Wakeword ou ao chamar .activate() . |
| desativar | null | Disparou quando o pipeline de fala desativar. |
| jogar | { playing: boolean } | Disponível quando a reprodução do TTS começa e para. Veja a função speak() . |
| tempo esgotado | null | Disparou quando um pipeline ativo se destaca devido à falta de reconhecimento. |
| traço | { message: string } | Disparado por mensagens de rastreamento. A verbosidade é determinada pela opção traceLevel . |
| erro | { error: string } | Disponível quando há um erro na porta -voz. |
Quando um evento de erro é acionado, qualquer promessa existente é rejeitada.
Essas funções de utilidade são usadas pela Spokestack para verificar a permissão do microfone no iOS e permissão de reconhecimento de fala e Android no iOS.
▸ CheckSpeech (): Promise boolean
Esta função pode ser usada para verificar se o usuário forneceu a permissão necessária para a fala. No iOS, isso inclui o microfone e a reconhecimento da fala. No Android, apenas o microfone é necessário.
import { checkSpeech } from 'react-native-spokestack-tray'
// ...
const hasPermission = await checkSpeech ( ) Promise boolean
src/utils/permissions.ts: 78
▸ RequestSpeech (): Promise boolean
Esta função pode ser usada para realmente solicitar a permissão necessária para a fala. No iOS, isso inclui o microfone e a reconhecimento da fala. No Android, apenas o microfone é necessário.
Nota: Se o usuário diminuiu no passado no iOS, o usuário deve ser enviado para as configurações.
import { requestSpeech } from 'react-native-spokestack-tray'
// ...
const hasPermission = await requestSpeech ( ) Promise boolean
src/utils/permissions.ts: 106
Mit