
Reaja o plug -in nativo para adicionar voz usando a porta -voz. Isso inclui reconhecimento de fala, wakeword e entendimento de linguagem natural, além de sintetizar o texto na fala usando vozes de porta -voz.
Usando NPM:
npm install --save react-native-spokestackou usando fios:
yarn add react-native-spokestackEm seguida, siga as instruções para cada plataforma para vincular a S-Spokestack React-Native ao seu projeto:
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.
O React-Native-Spokestack faz uso de APIs relativamente novas disponíveis apenas no iOS 13+. Defina a meta de implantação para o iOS 13 no topo do seu podfile:
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 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.
< 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 {
// Set the minimum SDK to 24.
// React Native 0.64+ sets version 21.
// If you prefer to leave the minimum SDK at 21,
// another option is to set this to 21, but
// also set android.enableDexingArtifactTransform=false
// in your top-level gradle.properties.
// See https://github.com/google/ExoPlayer/issues/6801#issuecomment-574089568
minSdkVersion = 24
// ...
dependencies {
// Minimium gradle is 3.0.1+
// The latest React Native already has this
classpath( " com.android.tools.build:gradle:4.2.1 " ) 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 " /> A permissão Record_Audio é especial, pois deve ser listada no AndroidManifest.xml , bem como solicitado em tempo de execução. Existem algumas maneiras de lidar com isso (o React-Native-Spokestack não faz isso por você):
Embora o iOS traga diálogos de permissões automaticamente para quaisquer permissões necessárias, você deve fazer isso manualmente no Android.
O React Native já fornece um módulo para isso. Consulte as permissões e o nativo do React para obter mais informações.
Comece a usar a porta-voz ou confira nossos tutoriais aprofundados no ASR, NLU e TTS. Também não deixe de dar uma olhada no livro de receitas para obter soluções rápidas para problemas comuns.
Um aplicativo de exemplo de funcionamento está incluído neste repositório no example/ pasta.
import Spokestack from 'react-native-spokestack'
import { View , Button , Text } from 'react-native'
function App ( ) {
const [ listening , setListening ] = useState ( false )
const onActivate = ( ) => setListening ( true )
const onDeactivate = ( ) => setListening ( false )
const onRecognize = ( { transcript } ) => console . log ( transcript )
useEffect ( ( ) => {
Spokestack . addEventListener ( 'activate' , onActivate )
Spokestack . addEventListener ( 'deactivate' , onDeactivate )
Spokestack . addEventListener ( 'recognize' , onRecognize )
Spokestack . initialize (
process . env . SPOKESTACK_CLIENT_ID ,
process . env . SPOKESTACK_CLIENT_SECRET
)
// This example starts the Spokestack pipeline immediately,
// but it could be delayed until after onboarding or other
// conditions have been met.
. then ( Spokestack . start )
return ( ) => {
Spokestack . removeAllListeners ( )
}
} , [ ] )
return (
< View >
< Button onClick = { ( ) => Spokestack . activate ( ) } title = "Listen" />
< Text > { listening ? 'Listening...' : 'Idle' } </ Text >
</ View >
)
} 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 : {
assetExts : defaults . assetExts . concat ( [ 'tflite' , 'txt' , 'sjson' ] )
}
}Em seguida, inclua arquivos de modelo usando objetos de origem:
Spokestack . initialize ( clientId , clientSecret , {
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.
▸ Inicialize ( clientId , clientSecret , config? ): Promise void
Inicialize o pipeline de fala; necessário para todos os outros métodos.
Os 2 primeiros args são suas credenciais de porta -voz disponíveis gratuitamente em https://spokestack.io. Evite codificar isso em seu aplicativo. Existem várias maneiras de incluir variáveis de ambiente em seu código.
Usando Process.env: https://babeljs.io/docs/en/babel-plugin-transform-inline-environment-variables/
Usando um arquivo .env local ignorado por git: https://github.com/goatandsheep/react-native-dotenv https://github.com/luggit/react-native-config
Consulte SpokestackConfig para obter todas as opções disponíveis.
example
import Spokestack from 'react-native-spokestack'
// ...
await Spokestack . initialize ( process . env . CLIENT_ID , process . env . CLIENT_SECRET , {
pipeline : {
profile : Spokestack . PipelineProfile . PTT_NATIVE_ASR
}
} ) | Nome | Tipo |
|---|---|
clientId | string |
clientSecret | string |
config? | [SpokestackConfig](#SpokestackConfig) |
Promise void
Index.ts: 64
▸ Destroy (): Promise void
Destrói o pipeline de fala, remove todos os ouvintes e libera todos os recursos. Isso pode ser chamado antes de reinicializar o pipeline. Um bom lugar para chamar isso é no componentWillUnmount .
example
componentWillUnmount ( ) {
Spokestack . destroy ( )
} Promise void
Index.ts: 81
▸ Start (): Promise void
Inicie o pipeline de fala. O pipeline de fala começa no estado deactivate .
example
import Spokestack from 'react-native-spokestack`
// ...
Spokestack . initialize ( process . env . CLIENT_ID , process . env . CLIENT_SECRET )
. then ( Spokestack . start ) Promise void
Index.ts: 96
Stop Stop (): Promise void
Pare o pipeline de fala. Isso efetivamente para ASR, VAD e Wakeword.
example
import Spokestack from 'react-native-spokestack`
// ...
await Spokestack . stop ( ) Promise void
Index.ts: 110
▸ Activate (): Promise void
Ative manualmente o pipeline de fala. Isso é necessário ao usar um perfil PTT. Os perfis VAD também podem ativar o ASR sem a necessidade de chamar esse método.
example
import Spokestack from 'react-native-spokestack`
// ...
< Button title = "Listen" onClick = { ( ) => Spokestack . activate ( ) } /> Promise void
Index.ts: 126
▸ DeActivate (): Promise void
Desative o oleoduto da fala. Se o perfil incluir Wakeword, o pipeline voltará a ouvir o Wakeword. Se o VAD estiver ativo, o pipeline poderá reativar sem chamar Activate ().
example
import Spokestack from 'react-native-spokestack`
// ...
< Button title = "Stop listening" onClick = { ( ) => Spokestack . deactivate ( ) } /> Promise void
Index.ts: 142
▸ SyntheSize ( input , format? voice? ): Promise string
Sintetize algum texto em discurso retorna Promise<string> com a string sendo o URL para um MPEG jogável.
Atualmente, existe apenas uma voz gratuita disponível ("Demo-Male"). A voz pode ser alterada se você criou uma voz personalizada usando uma conta do Spokestack Maker. Veja https://spokestack.io/pricing#maker.
example
const url = await Spokestack . synthesize ( 'Hello world' )
play ( url ) | Nome | Tipo |
|---|---|
input | string |
format? | [TTSFormat](#TTSFormat) |
voice? | string |
Promise string
Index.ts: 158
▸ Speak ( input , format? voice? ): Promise void
Sintetize algum texto em fala e reproduza imediatamente o áudio através do sistema de áudio padrão. O manuseio da sessão de áudio pode ficar muito complexo e recomendamos o uso de uma biblioteca RN focada no áudio para algo mais do que uma reprodução muito simples.
Atualmente, existe apenas uma voz gratuita disponível ("Demo-Male").
example
await Spokestack . speak ( 'Hello world' ) | Nome | Tipo |
|---|---|
input | string |
format? | [TTSFormat](#TTSFormat) |
voice? | string |
Promise void
Index.ts: 174
▸ Classificar ( utterance ): Promise SpokestackNLUResult
Classifique o enunciado usando o modelo de compreensão de linguagem natural de intenção/slot passada para a porta -voz.initialize (). Consulte https://www.spokestack.io/docs/concepts/nlu para mais informações.
example
const result = await Spokestack . classify ( 'hello' )
// Here's what the result might look like,
// depending on the NLU model
console . log ( result . intent ) // launch | Nome | Tipo |
|---|---|
utterance | string |
Promise SpokestackNLUResult
Index.ts: 190
▸ Isinitialized (): Promise boolean
Retorna se a porta -porta foi inicializada
example
console . log ( `isInitialized: ${ await Spokestack . isInitialized ( ) } ` ) Promise boolean
Index.ts: 199
▸ ISSTARTED (): Promise boolean
Retorna se o pipeline de fala foi iniciado
example
console . log ( `isStarted: ${ await Spokestack . isStarted ( ) } ` ) Promise boolean
Index.ts: 208
▸ Isativated (): Promise boolean
Retorna se o pipeline de fala está atualmente ativado
example
console . log ( `isActivated: ${ await Spokestack . isActivated ( ) } ` ) Promise boolean
Index.ts: 217
• Confiança : number
Um número de 0 a 1 representando a confiança do modelo NLU na intenção que reconheceu, onde 1 representa confiança absoluta.
tipos.ts: 115
• Intenção : string
A intenção baseada na correspondência fornecida pelo modelo NLU
tipos.ts: 113
• Slots : SpokestackNLUSlots
Dados associados à intenção, fornecida pelo modelo NLU
Types.ts: 117
▪ [Chave: string ]: SpokestackNLUSlot
• RawValue : string
O valor original da string do slot reconhecido no enunciado do usuário
tipos.ts: 104
• Tipo : string
O tipo do slot, conforme definido nos metadados do modelo
tipos.ts: 100
• Valor : any
O valor analisado (digitado) do slot reconhecido na expressão do usuário
tipos.ts: 102
▸ AddEventListener ( eventType , listener , context? ): EmitterSubscription
Vincular a qualquer evento emitido pelas bibliotecas nativas, veja eventos para uma lista de todos os eventos disponíveis.
example
useEffect ( ( ) => {
const listener = Spokestack . addEventListener ( 'recognize' , onRecognize )
// Unsubsribe by calling remove when components are unmounted
return ( ) => {
listener . remove ( )
}
} , [ ] ) | Nome | Tipo | Descrição |
|---|---|---|
eventType | string | nome do evento para o qual estamos registrando o ouvinte |
listener | ( event : any ) => void | a função do ouvinte |
context? | Object | Contexto do ouvinte |
EmitterSubscription
Index.ts: 237
▸ RemovereventListener ( eventType , listener ): void
Remova um ouvinte de evento
example
Spokestack . removeEventListener ( 'recognize' , onRecognize ) | Nome | Tipo | Descrição |
|---|---|---|
eventType | string | Nome do evento para emitir |
listener | (... args : any []) => any | Função para invocar quando o evento especificado é emitido |
void
Index.ts: 253
▸ RemoveAlLlisteners (): void
Remova quaisquer ouvintes existentes
example
Spokestack . removeAllListeners ( ) void
Index.ts: 265
Três formatos são suportados ao usar TTS de porta -voz. Texto bruto, SSML e Marydown da fala. Consulte https://www.speechmarkdown.org/ se não estiver familiarizado com o Markdown da fala. O IPA é esperado ao usar SSML ou Markdown de fala.
• Speechmarkdown = 2
tipos.ts: 73
• ssml = 1
tipos.ts: 72
• Texto = 0
tipos.ts: 71
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 são as opções de configuração que podem ser passadas para Spokestack.initialize(_, _, spokestackConfig) . Não são necessárias opções no SpokestackConfig.
SpokestackConfig tem a seguinte estrutura:
interface SpokestackConfig {
/**
* This option is only used when remote URLs are passed to fields such as `wakeword.filter`.
*
* Set this to true to allow downloading models over cellular.
* Note that `Spokestack.initialize()` will still reject the promise if
* models need to be downloaded but there is no network at all.
*
* Ideally, the app will include network handling itself and
* inform the user about file downloads.
*
* Default: false
*/
allowCellularDownloads ?: boolean
/**
* Wakeword, Keyword, and NLU model files are cached internally.
* Set this to true whenever a model is changed
* during development to refresh the internal model cache.
*
* This affects models passed with `require()` as well
* as models downloaded from remote URLs.
*
* Default: true in dev mode, false otherwise
*
* **Important:** By default, apps in production will
* cache models to avoid downloading them every time
* the app is launched. The side-effect of this optimization
* is that if models change on the CDN, apps will
* not pick up those changes–unless the app were reinstalled.
* We think this is a fair trade-off, but set this to `true`
* if you prefer to download the models every time the app
* is launched.
*/
refreshModels ?: boolean
/**
* This controls the log level for the underlying native
* iOS and Android libraries.
* Also add a `"trace"` event listener to get trace events.
* See the TraceLevel enum for values.
*/
traceLevel ?: TraceLevel
/**
* Most of these options are advanced aside from "profile"
*/
pipeline ?: PipelineConfig
/** Only needed if using Spokestack.classify */
nlu ?: NLUConfig
/**
* Only required for wakeword
* Most options are advanced aside from
* filter, encode, and decode for specifying config files.
*/
wakeword ?: WakewordConfig
/**
* Only required for the keyword recognizer
* Most options are advanced aside from
* filter, encode, decode, metadata, and classes.
*/
keyword ?: KeywordConfig
} Quanto registro para mostrar um número mais baixo significa mais logs.
• Debug = 10
tipos.ts: 58
• Informações = 30
tipos.ts: 60
• Nenhum = 100
tipos.ts: 61
• Perf = 20
tipos.ts: 59
Os perfis de pipeline configuram o pipeline de fala com base em suas necessidades
• ptt_native_asr = 2
O reconhecimento automático de fala Apple/Android está ativado quando o pipeline de fala está ativo. Este é provavelmente o perfil mais comum quando não estiver usando o Wakeword.
tipos.ts: 24
• ptt_spokestack_asr = 5
O reconhecimento automático de fala da porta -voz está ativado quando o pipeline de fala está ativo. Esse é provavelmente o perfil mais comum quando não usa o Wakeword, mas a porta -voz ASR é preferida.
tipos.ts: 42
• tflite_wakeword_keyword = 6
A Wake Tflite Wake, sensível ao VAD, ativa o reconhecimento de palavras-chave Tflite
tipos.ts: 46
• tflite_wakeword_native_asr = 0
Configure o Wakeword e use Apple/Android ASR local. Observe que o WakeWord.Filter, Wakeword.Encode e Wakeword.Detect são necessários se algum perfil do WakeWord for usado.
tipos.ts: 12
• tflite_wakeword_spokestack_asr = 3
Configure o Wakeword e use a porta -voz remota ASR. Observe que o WakeWord.Filter, Wakeword.Encode e Wakeword.Detect são necessários se algum perfil do WakeWord for usado.
tipos.ts: 30
• vad_keyword_asr = 7
Reconhecedor de palavras-chave Tflite acionado por Vad
tipos.ts: 50
• vad_native_asr = 1
O reconhecimento automático de fala da Apple/Android está ligado quando a detecção ativa de voz desencadeia.
tipos.ts: 17
• vad_spokestack_asr = 4
O reconhecimento automático de fala da porta -voz está o que a detecção ativa de voz desencadeia.
tipos.ts: 35
• AGCCOMPRESSÃO Optional : number
advanced
Android somente para acoutricGainControl
Nível de áudio de pico de alvo, em -db, para manter um pico de -9db, configure um valor de 9
Types.ts: 192
• AGCTARGETLEVELDBFS Optional : number
advanced
Android somente para acoutricGainControl
Taxa de compressão de faixa dinâmica, em DBFs
Type.ts: 200
• Anspolicy Optional : "aggressive" | "very-aggressive" | "mild" | "medium"
advanced
Somente Android para AcousticNoissePressor
Política de ruído
TIPO.TS: 183
• Largura de buffer Optional : number
advanced
Largura do buffer, usada com largura de estrutura para determinar o tamanho do buffer
TIPO.TS: 155
• Largura de quadro Optional : number
advanced
Largura do quadro de fala, em MS
tipos.ts: 149
• Perfil Optional : PipelineProfile
Os perfis são coleções de configurações comuns para estágios de pipeline.
Se nenhum perfil for definido explicitamente, a porta -voz determina um perfil padrão sensato com base na configuração passada para a Spokestack.initialize() :
Se os arquivos de configuração do Wakeword estiverem definidos (e a configuração de palavras -chave não for), o padrão será definido como TFLITE_WAKEWORD_NATIVE_ASR .
Se os arquivos de configuração de palavras -chave forem definidas (e a configuração do Wakeword não for), o padrão será definido como VAD_KEYWORD_ASR .
Se os arquivos de configuração do WakeWord e do Keyword for definidos, o padrão será definido como TFLITE_WAKEWORD_KEYWORD .
Caso contrário, o padrão é PTT_NATIVE_ASR .
tipos.ts: 139
• Amostrado Optional : number
Taxa de amostragem de áudio, em Hz
tipos.ts: 143
• Vadfalldelay Optional : number
advanced
Comprimento da execução de detecção de ponta, em MS; Este valor determina quantas amostras negativas devem ser recebidas para virar o detector para negativo
tipos.ts: 166
• Vadmode Optional : "quality" | "low-bitrate" | "aggressive" | "very-aggressive"
Modo de detector de atividade de voz
tipos.ts: 159
• VadriDelay Optional : number
advanced
Apenas Android
Comprimento da execução de detecção de ponta, em MS; Este valor determina quantas amostras positivas devem ser recebidas para virar o detector para positivo
tipos.ts: 175
• Metadados : string | number
O arquivo JSON para os metadados da NLU. Se especificado, o modelo e o vocabulário também são necessários.
Este campo aceita 2 tipos de valores.
require ou import (por exemplo metadata: require('./metadata.sjson') ). IMPORTANTE: Uma extensão especial é usada para os arquivos JSON de metadados locais ( .sjson ) ao usar require ou import para que o arquivo não seja analisado quando incluído, mas importado como um objeto de origem. Isso faz com que o arquivo seja lido e analisado pelas bibliotecas nativas subjacentes.
tipos.ts: 223
• Modelo : string | number
O modelo NLU Tensorflow-Lite. Se especificado, metadados e vocabulário também são necessários.
Este campo aceita 2 tipos de valores.
require ou import (por exemplo model: require('./nlu.tflite') )) TIPO.TS: 211
• Vocabro : string | number
Um arquivo txt que contém o vocabulário da NLU. Se especificado, o modelo e os metadados também são necessários.
Este campo aceita 2 tipos de valores.
require ou import (por exemplo vocab: require('./vocab.txt') )) tipos.ts: 231
• comprimento de entrada Optional : number
tipos.ts: 244
• Detectar : string | number
O modelo "detectar" tensorflow-lite. Se especificado, filtrar e codificar também são necessários.
Este campo aceita 2 tipos de valores.
require ou import (por exemplo detect: require('./detect.tflite') ))O modelo de codificação é usado para executar cada etapa autoregressiva sobre os quadros MEL; Suas entradas devem ser moldadas [comprimento Mel, Mel-Width] e suas saídas [largura de codificação], com uma entrada/saída de estado adicional em forma de [largura do estado]
tipos.ts: 272
• Encodes : string | number
O modelo "codificar" tensorflow-lite. Se especificado, filtrar e detectar também são necessários.
Este campo aceita 2 tipos de valores.
require ou import (por exemplo encode: require('./encode.tflite') ))Suas entradas devem ser moldadas [comprimento de codificação, largura de codificação] e suas saídas
tipos.ts: 283
• Filtro : string | number
O modelo "filtro" tensorflow-lite. Se especificado, detectar e codificar também são necessários.
Este campo aceita 2 tipos de valores.
require ou import (por exemplo filter: require('./filter.tflite') ))O modelo de filtro é usado para calcular um quadro de espectrograma MEL a partir do STFT linear; Suas entradas devem ser moldadas [WFT-Width] e suas saídas [Mel-Width]
TIPO.TS: 260
• ActiveMax Optional : number
advanced
O comprimento máximo de uma ativação, em milissegundos, usado para cronometrar a ativação
tipos.ts: 373
• Activemin Optional : number
advanced
O comprimento mínimo de uma ativação, em milissegundos, costumava ignorar uma desativação do VAD após o wakeword
tipos.ts: 366
• Optional requesttimeout : number
apenas iOS
Tempo de tempo para permitir que uma solicitação ASR da Apple seja executada, em milissegundos. A Apple possui um limite sem documentos de 60000ms por solicitação.
TIPO.TS: 380
• rmsalpha Optional : number
Android advanced apenas
A taxa de atualização da média móvel ponderada exponencial (EWMA) para a energia atual do sinal RMS (0 para normalização sem RMS)
tipos.ts: 397
• RMStarget Optional : number
Android advanced apenas
A energia de sinal de quadrado médio da raiz linear desejada (RMS), que é usada para normalização do sinal e deve ser ajustada ao alvo RMS usado durante o treinamento
TIPO.TS: 389
• Wakewords Optional : string | string []
apenas iOS
Uma matriz ordenada ou lista de palavras-chave Wakeword, separada por vírgula, apenas necessárias ao não passar o filtro, detectar e codificar os caminhos.
TIPO.TS: 404
• Detectar : string | number
O modelo "detectar" tensorflow-lite. Se especificado, filtrar e codificar também são necessários.
Este campo aceita 2 tipos de valores.
require ou import (por exemplo detect: require('./detect.tflite') ))O modelo de codificação é usado para executar cada etapa autoregressiva sobre os quadros MEL; Suas entradas devem ser moldadas [comprimento Mel, Mel-Width] e suas saídas [largura de codificação], com uma entrada/saída de estado adicional em forma de [largura do estado]
tipos.ts: 272
• Encodes : string | number
O modelo "codificar" tensorflow-lite. Se especificado, filtrar e detectar também são necessários.
Este campo aceita 2 tipos de valores.
require ou import (por exemplo encode: require('./encode.tflite') ))Suas entradas devem ser moldadas [comprimento de codificação, largura de codificação] e suas saídas
tipos.ts: 283
• Filtro : string | number
O modelo "filtro" tensorflow-lite. Se especificado, detectar e codificar também são necessários.
Este campo aceita 2 tipos de valores.
require ou import (por exemplo filter: require('./filter.tflite') ))O modelo de filtro é usado para calcular um quadro de espectrograma MEL a partir do STFT linear; Suas entradas devem ser moldadas [WFT-Width] e suas saídas [Mel-Width]
TIPO.TS: 260
Os metadata ou classes são necessários e são mutuamente exclusivos.
• Metadados : string | number
O arquivo JSON para metadados da palavra -chave. Exigido se keyword.classes não for especificada.
Este campo aceita 2 tipos de valores.
require ou import (por exemplo metadata: require('./metadata.sjson') ). IMPORTANTE: Uma extensão especial é usada para os arquivos JSON de metadados locais ( .sjson ) ao usar require ou import para que o arquivo não seja analisado quando incluído, mas importado como um objeto de origem. Isso faz com que o arquivo seja lido e analisado pelas bibliotecas nativas subjacentes.
TIPO.TS: 424
• Classes : string | string []
Uma lista separada por vírgula ou uma matriz ordenada de nomes de classe para as palavras-chave. O nome correspondente à classe mais provável será retornado no campo de transcrição quando o evento de reconhecimento for aumentado. Exigido se keyword.metadata não for especificada.
tipos.ts: 434
Essas propriedades podem ser passadas para o objeto wakeword ou keyword , mas não são compartilhadas.
• Comprimento de codificação Optional : number
advanced
O comprimento da janela deslizante da saída do codificador usada como entrada para o classificador, em milissegundos
TIPO.TS: 293
• Codewidth Optional : number
advanced
O tamanho da saída do codificador, em unidades vetoriais
TIPO.TS: 299
• FFTHOPLENGEM Optional : number
advanced
O período de tempo para pular cada vez que o STFT sobreposto é calculado, em milissegundos
tipos.ts: 322
• FFTWindowsize Optional : number
advanced
O tamanho da janela de sinal usado para calcular o STFT, em número de amostras - deve ser uma potência de 2 para máxima eficiência
TIPO.TS: 306
• FFTWindowType Optional : string
advanced
Apenas Android
O nome da função de janela para aplicar a cada quadro de áudio antes de calcular o STFT; Atualmente, a janela "Hann" é suportada
TIPO.TS: 315
• MelframeLength Optional : number
advanced
O período de tempo para pular cada vez que o STFT sobreposto é calculado, em milissegundos
tipos.ts: 329
• Melframewidth Optional : number
advanced
O tamanho de cada quadro de espectrograma MEL, no número de componentes do FilterBank
TIPO.TS: 336
• Pré -ênfase Optional : number
advanced
O peso do filtro pré-ênfase para aplicar ao sinal de áudio normalizado (0 sem pré-ênfase)
tipos.ts: 343
• Largura de estado Optional : number
advanced
O tamanho do estado do codificador, em unidades vetoriais (padrões para a largura de despertar-code)
TIPO.TS: 349
• Limite Optional : number
advanced
O limiar da saída posterior do classificador, acima do qual o gatilho ativa o pipeline, na faixa [0, 1]
TIPO.TS: 356
Apache-2.0
Copyright 2021 Portaque