
Отрешите натуральный плагин для добавления голоса с помощью Spokestack. Это включает в себя распознавание речи, WakeWord и понимание естественного языка, а также синтезирование текста к речи с использованием Vokestack Voices.
Используя NPM:
npm install --save react-native-spokestackили используя пряжу:
yarn add react-native-spokestackЗатем следуйте инструкциям для каждой платформы, чтобы связать реагируемое явление на вашем проекте:
Во -первых, откройте 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 , обязательно сделайте следующие изменения.
React-Con-Spokestack использует относительно новые API, доступные только в iOS 13+. Установите цель развертывания на iOS 13 в верхней части вашего подполкивания:
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 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, чтобы разрешить разрешения.
< 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 {
// 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 " ) Добавьте необходимые разрешения в свой 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 " /> Разрешение record_audio особенное в том смысле, что оно должно быть указано в AndroidManifest.xml , а также запрошен во время выполнения. Есть пара способов справиться с этим (React-C-Spokestack не делает этого для вас):
В то время как iOS будет автоматически разрабатывать диалоги разрешения для любых необходимых разрешений, вы должны сделать это вручную в Android.
React Native уже предоставляет для этого модуль. Смотрите React Native's Permissionsandroid для получения дополнительной информации.
Начните использовать Spokestack или проверить наши углубленные учебные пособия по ASR, NLU и TTS. Также обязательно посмотрите на кулинарную книгу для быстрых решений общих проблем.
Рабочее приложение приложение включено в это репо в example/ папке.
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 >
)
} Чтобы включить модельные файлы локально в ваше приложение (вместо того, чтобы загружать их из CDN), вам также необходимо добавить необходимые расширения, чтобы файлы могли быть включены Babel. Чтобы сделать это, отредактируйте свой metro.config.js .
const defaults = require ( 'metro-config/src/defaults/defaults' )
module . exports = {
resolver : {
assetExts : defaults . assetExts . concat ( [ 'tflite' , 'txt' , 'sjson' ] )
}
}Затем включите файлы моделей, используя исходные объекты:
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' )
}
} ) Это не требуется. Пропустите удаленные URL -адреса к тем же параметрам конфигурации, и файлы будут загружены и кэшируются при первом вызове initialize .
См. Руководство по содействию, чтобы узнать, как внести свой вклад в репозиторий и рабочий процесс разработки.
▸ Инициализация ( clientId , clientSecret , config? ): Promise void
Инициализировать речевой трубопровод; требуется для всех других методов.
Первые 2 арга - это ваши учетные данные Spokestack, доступные бесплатно от https://spokestack.io. Избегайте их жесткой кодировки в вашем приложении. В ваш код есть несколько способов включить переменные среды.
Использование Process.env: https://babeljs.io/docs/en/babel-plugin-transform-inline-environment-variables/
Использование локального файла .ENV, игнорируемого GIT: https://github.com/goatandsheep/react-native-dotenv https://github.com/luggit/react-native-config
См. SpokestackConfig для всех доступных вариантов.
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
}
} ) | Имя | Тип |
|---|---|
clientId | string |
clientSecret | string |
config? | [SpokestackConfig](#SpokestackConfig) |
Promise void
index.ts: 64
▸ Destroy (): Promise void
Уничтожает речевой трубопровод, устраняет всех слушателей и освобождает все ресурсы. Это может быть вызвано до повторного инициализации трубопровода. Хорошее место, чтобы назвать это в componentWillUnmount .
example
componentWillUnmount ( ) {
Spokestack . destroy ( )
} Promise void
index.ts: 81
▸ Start (): Promise void
Начните речевой трубопровод. Речевой трубопровод начинается в состоянии 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 (): Promise void
Остановите речевой трубопровод. Это эффективно останавливает ASR, VAD и WakeWord.
example
import Spokestack from 'react-native-spokestack`
// ...
await Spokestack . stop ( ) Promise void
index.ts: 110
▸ Activate (): Promise void
Вручную активируйте речевой трубопровод. Это необходимо при использовании PTT -профиля. Профили VAD также могут активировать ASR без необходимости назвать этот метод.
example
import Spokestack from 'react-native-spokestack`
// ...
< Button title = "Listen" onClick = { ( ) => Spokestack . activate ( ) } /> Promise void
index.ts: 126
▸ Deactivate (): Promise void
Деактивировать речевой трубопровод. Если профиль включает WakeWord, трубопровод вернется к прослушиванию WakeWord. Если VAD активен, трубопровод может реактивировать без вызова 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
Синтезируйте какой -то текст в речь возвращает Promise<string> с строкой, являющейся URL -адресом для воспроизводимого MPEG.
В настоящее время доступен только один бесплатный голос («демонстрация»). Голос может быть изменен, если вы создали пользовательский голос, используя учетную запись Maker Spokestack. Смотрите https://spokestack.io/pricing#maker.
example
const url = await Spokestack . synthesize ( 'Hello world' )
play ( url ) | Имя | Тип |
|---|---|
input | string |
format? | [TTSFormat](#TTSFormat) |
voice? | string |
Promise < string >
index.ts: 158
▸ Говорите ( input , format? voice? ): Promise void
Синтезируйте немного текста в речь, а затем сразу же воспроизводите звук через аудиосистему по умолчанию. Обработка аудиосессии может стать очень сложной, и мы рекомендуем использовать библиотеку RN, ориентированную на аудио для чего -то большего, чем очень простого воспроизведения.
В настоящее время доступен только один бесплатный голос («демонстрация»).
example
await Spokestack . speak ( 'Hello world' ) | Имя | Тип |
|---|---|
input | string |
format? | [TTSFormat](#TTSFormat) |
voice? | string |
Promise void
index.ts: 174
▸ Классифицируйте ( utterance ): Promise SpokestackNLUResult
Классифицируйте высказывание, используя модель Понимания естественного языка намерения/слота, передаваемой Spokestack.initialize (). См. Https://www.spokestack.io/docs/concepts/nlu для получения дополнительной информации.
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 | Имя | Тип |
|---|---|
utterance | string |
Promise SpokestackNLUResult
index.ts: 190
▸ ISinitialized (): Promise boolean
Возвращает, был ли Spokestack инициализирован
example
console . log ( `isInitialized: ${ await Spokestack . isInitialized ( ) } ` ) Promise boolean
index.ts: 199
▸ isstarted (): Promise boolean
Возвращает, был ли начатый речевой трубопровод
example
console . log ( `isStarted: ${ await Spokestack . isStarted ( ) } ` ) Promise boolean
index.ts: 208
▸ ISactivated (): Promise boolean
Возвращает, активируется ли речевой трубопровод
example
console . log ( `isActivated: ${ await Spokestack . isActivated ( ) } ` ) Promise boolean
index.ts: 217
• Уверенность : number
Число от 0 до 1, представляющее уверенность модели NLU в признании, где 1 представляет абсолютную уверенность.
Типы.ts: 115
• Намерение : string
Намерение, основанное на матче, предоставленном моделью NLU
Типы.ts: 113
• Слоты : SpokestackNLUSlots
Данные, связанные с намерением, предоставленные моделью NLU
Типы.ts: 117
▪ [Key: string ]: SpokestackNLUSlot
• RawValue : string
Исходное строковое значение слота, расположенное в высказывании пользователя
Типы.ts: 104
• Тип : string
Тип слота, как определено в метаданных моделей
Типы.ts: 100
• значение : any
Проанализированное (напечатанное) значение слота, расположенное в высказывании пользователя
Типы.ts: 102
▸ addEventListener ( eventType , listener , context? ): EmitterSubscription
Приведите любое событие, испускаемое нативными библиотеками, см. События для списка всех доступных событий.
example
useEffect ( ( ) => {
const listener = Spokestack . addEventListener ( 'recognize' , onRecognize )
// Unsubsribe by calling remove when components are unmounted
return ( ) => {
listener . remove ( )
}
} , [ ] ) | Имя | Тип | Описание |
|---|---|---|
eventType | string | Название события, на которое мы регистрируем слушателя |
listener | ( event : any ) => void | функция слушателя |
context? | Object | контекст слушателя |
EmitterSubscription
index.ts: 237
▸ RemoveEventListener ( eventType , listener ): void
Удалить слушателя событий
example
Spokestack . removeEventListener ( 'recognize' , onRecognize ) | Имя | Тип | Описание |
|---|---|---|
eventType | string | Название события, чтобы излучать |
listener | (... args : any []) => any | Функция для вызова, когда испускается указанное событие |
void
index.ts: 253
▸ removealllisteners (): void
Удалить любых существующих слушателей
example
Spokestack . removeAllListeners ( ) void
index.ts: 265
Три формата поддерживаются при использовании Spokestack TTS. Сырой текст, SSML и речевая отметка. См. IPA ожидается при использовании SSML или речи.
• Speechmarkdown = 2
Типы.ts: 73
• SSML = 1
Типы.ts: 72
• Текст = 0
Типы.ts: 71
Используйте 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.initialize(_, _, spokestackConfig) . В SpokestackConfig не требуется вариантов.
SpokestackConfig имеет следующую структуру:
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
} Сколько журналов, чтобы показать более низкий номер, означает больше журналов.
• отладка = 10
Типы.ts: 58
• Информация = 30
Типы.ts: 60
• Нет = 100
Типы.ts: 61
• perf = 20
Типы.ts: 59
Профили трубопроводов устанавливают речевой трубопровод на основе ваших потребностей
• ptt_native_asr = 2
Автоматическое распознавание речи Apple/Android включено, когда речевой трубопровод активен. Вероятно, это более распространенный профиль, когда не использует WakeWord.
Типы.ts: 24
• PTT_SPOKESTACK_ASR = 5
Spokestack Автоматическое распознавание речи продолжается, когда речевой трубопровод активен. Вероятно, это более распространенный профиль, когда не использует WakeWord, но Spokestack ASR является предпочтительным.
Типы.ts: 42
• tflite_wakeword_keyword = 6
VAD-чувствительное Tflite Wake Word активирует распознавание ключевых слов Tflite
Типы.ts: 46
• tflite_wakeword_native_asr = 0
Установите WakeWord и используйте локальный Apple/Android ASR. Обратите внимание, что WakeWord.filter, WakeWord.encode и WakeWord.Detect требуются, если используется какой -либо профиль WakeWord.
Типы.ts: 12
• tflite_wakeword_spokestack_asr = 3
Установите WakeWord и используйте удаленное Spokestack ASR. Обратите внимание, что WakeWord.filter, WakeWord.encode и WakeWord.Detect требуются, если используется какой -либо профиль WakeWord.
Типы.ts: 30
• vad_keyword_asr = 7
Vad-вызванный vad tflite keyword распознаватель
Типы.ts: 50
• vad_native_asr = 1
Автоматическое распознавание речи Apple/Android включено, когда голосовое активное обнаружение запускает его.
Типы.ts: 17
• vad_spokestack_asr = 4
Spokestack Автоматическое распознавание речи включено, когда голосовое активное обнаружение запускает его.
Типы.ts: 35
• Optional agccompressionGaindb : number
advanced
Только для Android для AcoutticGainControl
Целевой пиковой уровень аудио, в -db, чтобы поддерживать пик -9 дБ, настроить значение 9
Типы.ts: 192
• Optional AgctArgetLeveldbfs : number
advanced
Только для Android для AcoutticGainControl
Скорость сжатия динамического диапазона, в DBFS
Типы.ts: 200
• Optional Anspolicy : "aggressive" | "very-aggressive" | "mild" | "medium"
advanced
Только для Android для AcousticnoiseSuppressor
Шумовая политика
Типы.ts: 183
• Optional буферная прогиба : number
advanced
Ширина буфера, используемая с помощью рамки для определения размера буфера
Типы.ts: 155
• Optional рамка : number
advanced
Ширина речи, в MS
Типы.ts: 149
• Optional профиль : PipelineProfile
Профили представляют собой коллекции общих конфигураций для стадий трубопровода.
Если профиль не установлен явно, Spokestack определяет разумный профиль по умолчанию на основе конфигурации, передаваемого в Spokestack.initialize() :
Если файлы конфигурации WakeWord установлены (а конфигурация ключевых слов нет), по умолчанию будет установлено значение TFLITE_WAKEWORD_NATIVE_ASR .
Если файлы конфигурации ключевых слов установлены (а конфигурация WakeWord нет), по умолчанию будет установлено значение VAD_KEYWORD_ASR .
Если устанавливаются и файлы конфигурации WakeWord, и ключевые слова, по умолчанию будет установлено значение TFLITE_WAKEWORD_KEYWORD .
В противном случае по умолчанию PTT_NATIVE_ASR .
Типы.ts: 139
• Optional пробел : number
Скорость выборки аудио, в Гц
Типы.ts: 143
• Optional vadfalldelay : number
advanced
Длина прогона обнаружения падения, в MS; Это значение определяет, сколько отрицательных выборок необходимо получить, чтобы перевернуть детектор к отрицательному
Типы.ts: 166
• Optional вадмод : "quality" | "low-bitrate" | "aggressive" | "very-aggressive"
Режим детектора голосовой активности
Типы.ts: 159
• Optional вадриселэй : number
advanced
Только для андроида
Длина прогона обнаружения растущего края, в MS; Это значение определяет, сколько положительных выборок необходимо получить, чтобы перевернуть детектор к положительному
Типы.ts: 175
• Метаданные : string | number
Файл JSON для метаданных NLU. Если указано, модель и словарь также требуются.
Это поле принимает 2 типа значений.
require или import (например metadata: require('./metadata.sjson') ). ВАЖНО: Специальное расширение используется для локальных файлов метаданных JSON ( .sjson ) при использовании require или import , поэтому файл не анализируется, если включен, а вместо этого импортируется в качестве исходного объекта. Это делает это так, чтобы файл читается и анализируется базовыми местными библиотеками вместо этого.
Типы.ts: 223
• Модель : string | number
Модель NLU Tensorflow-Lite. Если указано, также требуются метаданные и словарь.
Это поле принимает 2 типа значений.
require или import (например, model: require('./nlu.tflite') ) Типы.ts: 211
• Vocab : string | number
TXT -файл, содержащий словарь NLU. Если указано, модель и метаданные также требуются.
Это поле принимает 2 типа значений.
require или import (например vocab: require('./vocab.txt') )) Типы.ts: 231
• Optional длина inputLength : number
Типы.ts: 244
• Обнаружение : string | number
Модель «обнаружить» Tensorflow-Lite. Если указано, также требуются фильтр и кодирование.
Это поле принимает 2 типа значений.
require или import (например, detect: require('./detect.tflite') )Модель Encode используется для выполнения каждого авторегрессивного шага над кадрами MEL; Его входы должны быть формированы [мель длиной, мель-ширина] и его выходы [ширина ENCODE] с дополнительным входом/выводом ввода в вводе/выводе [ширина состояния] [ширина состояния]
Типы.ts: 272
• Encode : string | number
Модель «Кодировать» Tensorflow-Lite. Если указано, фильтр и обнаружение также требуются.
Это поле принимает 2 типа значений.
require или import (например encode: require('./encode.tflite') )Его входы должны быть формированы [длина кода, ширина Encode] и его выходы
Типы.ts: 283
• Фильтр : string | number
Модель «фильтра» Tensorflow-Lite. Если указано, также требуется обнаружение и код.
Это поле принимает 2 типа значений.
require или import (например, filter: require('./filter.tflite') ))Модель фильтра используется для расчета кадра спектрограммы MEL из линейной STFT; Его входы должны быть формированы [ширина FFT], а его выходы [Mel-Width]
Типы.ts: 260
• Optional ActiveMax : number
advanced
Максимальная длина активации в миллисекундах, используемой для просмотра активации
Типы.ts: 373
• Optional активин : number
advanced
Минимальная длина активации, в миллисекундах, используется для игнорирования деактивации VAD после WakeWord
Типы.ts: 366
• Optional requestimeout : number
только для iOS
Продолжительное время, чтобы позволить запускать запрос Apple ASR в миллисекундах. Apple имеет недокументированный предел 60000 мс за запрос.
Типы.ts: 380
• Optional rmsalpha : number
advanced Android
Скорость обновления обновления в экспоненциально взвешенном среднем (EWMA) для текущей энергии сигнала среднеквадратичных средств (0 для нормализации NO RMS)
Типы.ts: 397
• Optional RMStarget : number
advanced Android
Желаемая энергия сигнала среднего линейного корня (среднеквадратичная), которая используется для нормализации сигнала и должна быть настроена на среднеквадратичную мишень, используемую во время обучения
Типы.ts: 389
• Optional бодрствования : string | string []
только для iOS
Заказанный массив или разделенный запятой список ключевых слов WakeWord, необходимых только при прохождении фильтра, обнаружения и кодирования.
Типы.ts: 404
• Обнаружение : string | number
Модель «обнаружить» Tensorflow-Lite. Если указано, также требуются фильтр и кодирование.
Это поле принимает 2 типа значений.
require или import (например, detect: require('./detect.tflite') )Модель Encode используется для выполнения каждого авторегрессивного шага над кадрами MEL; Его входы должны быть формированы [мель длиной, мель-ширина] и его выходы [ширина ENCODE] с дополнительным входом/выводом ввода в вводе/выводе [ширина состояния] [ширина состояния]
Типы.ts: 272
• Encode : string | number
Модель «Кодировать» Tensorflow-Lite. Если указано, фильтр и обнаружение также требуются.
Это поле принимает 2 типа значений.
require или import (например encode: require('./encode.tflite') )Его входы должны быть формированы [длина кода, ширина Encode] и его выходы
Типы.ts: 283
• Фильтр : string | number
Модель «фильтра» Tensorflow-Lite. Если указано, также требуется обнаружение и код.
Это поле принимает 2 типа значений.
require или import (например, filter: require('./filter.tflite') ))Модель фильтра используется для расчета кадра спектрограммы MEL из линейной STFT; Его входы должны быть формированы [ширина FFT], а его выходы [Mel-Width]
Типы.ts: 260
Требуются либо metadata , либо classes , и они взаимоисключающие.
• Метаданные : string | number
Файл JSON для метаданных ключевых слов. Требуется, если keyword.classes не указан.
Это поле принимает 2 типа значений.
require или import (например metadata: require('./metadata.sjson') ). ВАЖНО: Специальное расширение используется для локальных файлов метаданных JSON ( .sjson ) при использовании require или import , поэтому файл не анализируется, если включен, а вместо этого импортируется в качестве исходного объекта. Это делает это так, чтобы файл читается и анализируется базовыми местными библиотеками вместо этого.
Типы.ts: 424
• Классы : string | string []
Разделенный запятой список или упорядоченный массив имен классов для ключевых слов. Имя, соответствующее наиболее вероятному классу, будет возвращено в поле стенограммы при повышении события распознавания. Требуется, если keyword.metadata не указано.
Типы.ts: 434
Эти свойства могут быть переданы либо объекту конфигурации wakeword , либо keyword , но не являются общими.
• Optional длина Encodel : number
advanced
Длина скользящего окна вывода энкодера, используемого в качестве входа в классификатор, в миллисекундах
Типы.ts: 293
• Optional энкодевидт : number
advanced
Размер выхода энкодера, в векторных единицах
Типы.ts: 299
• Optional длина FFThopl : number
advanced
Продолжительность пропуска каждый раз, когда рассчитывается перекрывающийся STFT, в миллисекундах
Типы.ts: 322
• Optional FFTWindowsize : number
advanced
Размер окна сигнала, используемый для расчета STFT, по количеству образцов - должен быть мощностью 2 для максимальной эффективности
Типы.ts: 306
• Optional FFTWindowType : string
advanced
Только для андроида
Имя окончания окончания для применения к каждому аудио кадре перед вычислением STFT; В настоящее время поддерживается окно "Ханна"
Типы.ts: 315
• Optional мельфрамелизация : number
advanced
Продолжительность пропуска каждый раз, когда рассчитывается перекрывающийся STFT, в миллисекундах
Типы.ts: 329
• Optional MelframeWidth : number
advanced
Размер каждой кадры спектрограммы MEL, в количестве компонентов FilterBank
Типы.ts: 336
• Optional предварительный комплекс : number
advanced
Вес фильтра предварительного эмфазиса применить к нормализованному звуковому сигналу (0 без предварительного имфазиса)
Типы.ts: 343
• Optional WationWidth : number
advanced
Размер состояния энкодера, в векторных единицах (по умолчанию в ширину бодрствования)
Типы.ts: 349
• Optional порог : number
advanced
Порог заднего выхода классификатора, над которым триггер активирует трубопровод, в диапазоне [0, 1]
Типы.ts: 356
Apache-2.0
Copyright 2021 Spokestack