
Spokestack은 Android의 모바일 음성 인터페이스를위한 올인원 솔루션입니다. 음성 활동 감지, Wakeword 탐지, 음성 인식, 자연 언어 이해 (NLU) 및 음성 합성 (TTS)을 포함한 모든 음성 처리 퍼즐을 제공합니다. 기본 구성 (새로운 Android 장치)에서 TTS를 제외한 모든 것은 모바일 장치에서 직접 발생합니다. 클라우드와의 통신은 더 빠른 결과와 더 나은 개인 정보를 의미합니다.
그리고 Android가 지원하는 유일한 플랫폼은 아닙니다!
spokestack.io에서 무료 계정을 만들면 앱에 코드를 추가하지 않고도 자신의 NLU 모델을 교육하고 TTS를 테스트 할 수 있습니다. 우리는 당신을 위해 맞춤형 웨이크 워드와 tts 음성을 훈련시켜 앱의 목소리가 독특하고 기억에 남는 것을 보장 할 수도 있습니다.
간단한 소개를 보려면 계속 읽으십시오. 그러나 자세한 가이드는 다음을 참조하십시오.
참고 : Spokestack은 JCenter에서 주최했지만 중단 발표 이후 Maven Central로 배포를 옮겼습니다. 버전> = 11.0.2에 액세스하기 위해 repositories 블록에 mavenCentral() 포함되어 있는지 루트 레벨 build.gradle 파일에 포함하십시오.
Spokestack 's Manifest에 나열된 최소 Android SDK 버전은 8이기 때문입니다. 다른 기능을 사용하려면 적어도 API 레벨 21을 타겟팅하는 것이 가장 좋습니다.
TTS 재생 용 ExoPlayer를 포함하는 경우 (아래 참조) API 레벨 24보다 오래된 Android 버전에서 실행하는 데 어려움이있을 수 있습니다.이 문제가 발생하면 gradle.properties 파일에 다음 줄을 추가하십시오.
android.enableDexingArtifactTransform=false
앱의 build.gradle 에 다음을 추가하십시오. Gradle :
android {
// ...
compileOptions {
sourceCompatibility JavaVersion . VERSION_1_8
targetCompatibility JavaVersion . VERSION_1_8
}
}
// ...
dependencies {
// ...
// make sure to check the badge above or "releases" on the right for the
// latest version!
implementation ' io.spokestack:spokestack-android:11.5.2 '
// for TensorFlow Lite-powered wakeword detection and/or NLU, add this one too
implementation ' org.tensorflow:tensorflow-lite:2.6.0 '
// for automatic playback of TTS audio
implementation ' androidx.media:media:1.3.0 '
implementation ' com.google.android.exoplayer:exoplayer-core:2.14.0 '
// if you plan to use Google ASR, include these
implementation ' com.google.cloud:google-cloud-speech:1.22.2 '
implementation ' io.grpc:grpc-okhttp:1.28.0 '
// if you plan to use Azure Speech Service, include these, and
// note that you'll also need to add the following to your top-level
// build.gradle's `repositories` block:
// maven { url 'https://csspeechstorage.blob.core.windows.net/maven/' }
implementation ' com.microsoft.cognitiveservices.speech:client-sdk:1.9.0 '
}자세한 내용은 QuickStart 안내서를 참조하십시오. 그러나 다음은 30 초의 설정 버전입니다.
RECORD_AUDIO 권한을 요청해야합니다. 이에 대한 예는 골격 프로젝트를 참조하십시오. INTERNET 허가도 필요하지만 기본적으로 라이브러리의 매니페스트에 포함됩니다.Activity 에 다음 코드를 추가하십시오. private lateinit var spokestack : Spokestack
// ...
spokestack = Spokestack . Builder ()
.setProperty( " wake-detect-path " , " $cacheDir /detect.tflite " )
.setProperty( " wake-encode-path " , " $cacheDir /encode.tflite " )
.setProperty( " wake-filter-path " , " $cacheDir /filter.tflite " )
.setProperty( " nlu-model-path " , " $cacheDir /nlu.tflite " )
.setProperty( " nlu-metadata-path " , " $cacheDir /metadata.json " )
.setProperty( " wordpiece-vocab-path " , " $cacheDir /vocab.txt " )
.setProperty( " spokestack-id " , " your-client-id " )
.setProperty( " spokestack-secret " , " your-secret-key " )
// `applicationContext` is available inside all `Activity`s
.withAndroidContext(applicationContext)
// see below; `listener` here inherits from `SpokestackAdapter`
.addListener(listener)
.build()
// ...
// starting the pipeline makes Spokestack listen for the wakeword
spokestack.start()이 예제는 앱의 캐시 디렉토리에 Wakeword 및 NLU 모델을 저장한다고 가정합니다. 다시, 자산 번들 에서이 파일을이 디렉토리로 압축하는 예는 스켈레톤 프로젝트를 참조하십시오.
데모 "Spokestack"wakeword를 사용하려면 Tensorflow Lite 모델을 다운로드하십시오 : Detect | 인코딩 | 필터
아직 귀찮게하고 싶지 않다면 Wakeword Detection 및 NLU를 비활성화하면 위의 모든 파일 경로를 제거 할 수 있습니다.
spokestack = Spokestack . Builder ()
.withoutWakeword()
.withoutNlu()
// ...
.build() 이 경우 위와 같이 start() 해야하지만, 눌렀을 때 spokestack.activate() 를 호출하는 버튼을 만들고 싶을 것입니다. 이것은 사용자 음성을 기록한 ASR을 시작합니다.
또는 Speech Pipeline 문서에 설명 된대로 Default가 아닌 Speech Pipeline 프로파일을 사용하여 음성을 감지 할 때마다 ASR을 시작하도록 Spokestack을 설정할 수 있습니다. 이 경우 VADTriggerAndroidASR 프로필을 원할 것입니다.
// replace
.withoutWakeword()
// with
.withPipelineProfile( " io.spokestack.spokestack.profile.VADTriggerAndroidASR " ) 설정 중에 addListener() 라인도 참고하십시오. 음성 처리는 백그라운드 스레드에서 지속적으로 이루어 지므로 앱은 사용자가 언제 말했는지 알아낼 수있는 방법이 필요합니다. 중요한 이벤트는 이벤트를 통해 SpokestackAdapter 의 서브 클래스로 전달됩니다. 서브 클래스는 원하는만큼 다음 이벤트 방법을 재정의 할 수 있습니다. 하나를 구현하지 않기로 선택하는 것은 아무것도 깨지지 않을 것입니다. 당신은 그 행사를받지 않을 것입니다.
speechEvent(SpeechContext.Event, SpeechContext) : ASR이 활성화/비활성화 된 알림부터 사용자 음성의 일부 및 완전한 전 사체에 이르기까지 모든 것을 포함하여 Speech Pipeline의 이벤트를 전달합니다.nluResult(NLUResult) : NLU가 활성화되면 사용자 음성이 NLU를 통해 자동으로 전송됩니다. 당신의 앱이 다음에 무엇을 해야할지 결정하는 데 도움이되도록 해당 분류 결과를 원할 것입니다.ttsEvent(TTSEvent) : TTS 재생을 직접 관리하고 있다면 합성 된 연설이 언제 플레이 할 준비가되었는지 알고 싶을 것입니다 ( AUDIO_AVAILABLE 이벤트); 그렇지 않더라도 앱이 응답을 읽은 후에 마이크를 자동으로 재 활성화하려면 PLAYBACK_COMPLETE 이벤트가 도움이 될 수 있습니다.trace(SpokestackModule, String) : 모든 Spokestack 모듈의 로그/트레이스 메시지를 결합합니다. 일부 모듈에는 자체 이벤트 방법의 추적 이벤트가 포함되지만 각 이벤트 각각도 여기에 전송됩니다.error(SpokestackModule, Throwable) : 모든 Spokestack 모듈의 오류가 결합됩니다. 일부 모듈에는 자체 이벤트 방법의 오류 이벤트가 포함되지만 이러한 각 이벤트도 여기에 전송됩니다.QuickStart 안내서에는 이러한 대부분의 방법의 샘플 구현이 포함되어 있습니다.
언급했듯이 NLU가 활성화 된 경우 분류가 자동으로 처리되므로 Spokestack이 실행중인 동안 알아야 할 주요 방법은 다음과 같습니다.
start()/stop() : 파이프 라인을 시작/중지합니다. 실행 중에 Spokestack은 마이크를 사용하여 Wakeword가 비활성화되지 않는 한 앱의 Wakeword를 듣습니다.이 경우 ASR은 다른 방식으로 활성화되어야합니다. Spokestack이 더 이상 필요하지 않거나 앱이 정지 된 경우 무료 리소스에 파이프 라인을 중지해야합니다.activate()/deactivate() : ASR을 활성화/비활성화하여 사용자의 말을 듣고 전사합니다.synthesize(SynthesisRequest) : 오디오로 합성 될 Spokestack의 Cloud TTS 서비스에 텍스트를 보냅니다. 기본 구성 에서이 오디오는 사용 가능한 경우 자동으로 재생됩니다. Maven은 빌딩/배포에 사용되며 패키지는 Maven Central에서 호스팅됩니다.
이 패키지는 Android NDK를 설치해야하고 ANDROID_HOME 및 ANDROID_NDK_HOME 변수를 설정해야합니다. OSX에서 ANDROID_HOME 은 일반적으로 ~/Library/Android/sdk 로 설정되며 ANDROID_NDK_HOME 일반적으로 ~/Library/Android/sdk/ndk/<version> 로 설정됩니다.
ANDROID_NDK_HOME android.ndk.path 속성으로 로컬 maven settings.xml 파일에 지정할 수도 있습니다.
mvn test jacoco:reportmvn checkstyle:check Sonatype/Maven Central 자격 증명이 사용자 settings.xml 에 있는지 확인하십시오 (일반적으로 ~/.m2/settings.xml ) :
< servers >
< server >
< id >ossrh</ id >
< username >sonatype-username</ username >
< password >sonatype-password</ password >
</ server >
</ servers >비 마스터 브랜치에서 다음 명령을 실행하십시오. 이렇게하면 새 버전의 버전 번호와 태그를 입력하고 태그를 GitHub로 누르고 패키지를 소나 타입 저장소에 배포하라는 메시지가 표시됩니다.
mvn release:clean release:prepare release:perform파일을 두 번 업로드하려는 버그로 인해 Maven 목표는 실패 할 수 있지만 릴리스는 여전히 발생했습니다.
GitHub의 새 지점에 대한 풀 요청을 작성하고 병합하고 태그를 편집하여 릴리스 노트를 업데이트하여 프로세스를 완료하십시오.
출시에 대한 추가 정보는 http://maven.apache.org/maven-release/maven-release-plugin/을 참조하십시오.
저작권 2021 Spokestack, Inc.
Apache 라이센스, 버전 2.0 ( "라이센스")에 따라 라이센스가 부여되었습니다. 라이센스를 준수하는 것 외에는이 파일을 사용할 수 없습니다. 라이센스 사본을 얻을 수 있습니다
http://www.apache.org/licenses/LICENSE-2.0
해당 법률에 의해 요구되거나 서면에 동의하지 않는 한, 라이센스에 따라 배포 된 소프트웨어는 명시 적 또는 묵시적 보증 또는 조건없이 "그대로"기준으로 배포됩니다. 라이센스에 따른 특정 언어 통치 권한 및 제한 사항에 대한 라이센스를 참조하십시오.