
SpokeStack Pythonへようこそ!このライブラリは、Pythonで音声インターフェイスを開発することを目的としています。これには、従来のスマートスピーカーなどのRaspberry PIアプリケーションからDjango Webアプリケーションまで、何でも含まれます。 Pythonに組み込まれているものはすべて、音声インターフェイスを与えることができます。
システムの依存関係が満たされたら、次のようにライブラリをインストールできます。
pip install spokestackこのライブラリには、Tfliteモデルを実行する方法が必要です。この機能を追加するには、2つの方法があります。 1つ目は、完全なTensorflowライブラリのインストールです。
完全なTensorflowパッケージは、次のようにインストールされています。
pip install tensorflowRaspberry Piや同様の埋め込みデバイスなどの小さなフットプリントが必要なユースケースでは、Tfliteインタープリターをインストールする必要があります。
pip install --extra-index-url https://google-coral.github.io/py-repo/ tflite_runtimeホイールを取り付けることができない場合は、オーディオ入力と出力用のシステム依存関係をインストールする必要がある場合があります。
brew install lame portaudiosudo apt-get install portaudio19-dev libmp3lame-dev現在、Windows 10をネイティブにサポートしておらず、Debian依存関係を使用してLinux(WSL)用のWindowsサブシステムをインストールすることをお勧めします。ただし、ネイティブWindowsサポートに取り組みたい場合は、Pull Requestsを喜んで受け入れます。
Windows 10でspokestackを使用するためのもう1つの潜在的な手段は、Anacondaからです。これは、不自由な依存関係のためですが、テキストからスピーチ(TTS)のサポートがありません。一方、Portaudioはconda経由でインストールできます。
conda install portaudiospokestackの使用を開始する最も簡単な方法は、事前に構成されたパイプラインインスタンスの1つを使用することです。これらのプロファイルのいくつかを提供しており、多くの一般的なユースケースに適合しています。
from spokestack . profile . wakeword_asr import WakewordSpokestackASR
pipeline = WakewordSpokestackASR . create (
"spokestack_id" , "spokestack_secret" , model_dir = "path_to_wakeword_model"
)パイプラインに含まれているものを細かく制御したい場合は、 SpeechPipelineを使用できます。これは、VAD(音声アクティビティ検出)、ウェイクワード、およびASR(自動音声検出)を結び付けるモジュールです。 VADは、入力デバイスによってキャプチャされたオーディオのフレームに耳を傾け、音声が存在するかどうかを判断します。もしそうなら、Wakewordモデルは、認識するように訓練されたキーワードを探している次のオーディオのフレームを処理します。キーワードが見つかった場合、パイプラインがアクティブになり、音声認識を実行し、後続のオーディオをトランスクリプトに変換します。 SpeechPipelineは次のように初期化されます。
from spokestack . activation_timeout import ActivationTimeout
from spokestack . io . pyaudio import PyAudioInput
from spokestack . pipeline import SpeechPipeline
from spokestack . vad . webrtc import VoiceActivityDetector
from spokestack . wakeword . tflite import WakewordTrigger
from spokestack . asr . spokestack . speech_recognizer import SpeechRecognizer
mic = PyAudioInput ()
vad = VoiceActivityDetector ()
wake = WakewordTrigger ( "path_to_tflite_model" )
asr = SpeechRecognizer ( "spokestack_id" , "spokestack_secret" )
timeout = ActivationTimeout ()
pipeline = SpeechPipeline ( mic , [ vad , wake , asr , timeout ])
pipeline . run ()パイプラインが実行されているため、特定のイベントでプロセスの結果にアクセスすることが重要になります。たとえば、スピーチが認識されると、 recognizeイベントがあります。これらのイベントにより、コードをパイプラインの外で実行することができます。応答を登録するプロセスは、次のセクションで説明します。
パイプラインコールバックにより、音声イベントが検出されたときに追加のコードを実行できます。たとえば、 pipeline.event Decoratorに関数を登録することにより、パイプラインがアクティブになったときに印刷できます。
@ pipeline . event
def on_activate ( context ):
print ( context . is_active )パイプラインコールバックの最も重要なユースケースの1つは、NLUによる追加処理のためにASRトランスクリプトにアクセスすることです。トランスクリプトには、次のようにアクセスされます。
@ pipeline . event
def on_recognize ( context ):
print ( context . transcript )自然言語の理解は、発話をマシンが動作できる構造化データに変えます。私たちの目的のために、これは共同意図の検出とスロット充填です。概念の詳細については、こちらをご覧ください。私たちは、意図をユーザーがアプリケーションから望むアクション、スロットを要求されたアクションを満たすためのオプションの引数として考えるのが好きです。私たちのNLUモデルは次のように初期化されています:
from spokestack . nlu . tflite import TFLiteNLU
nlu = TFLiteNLU ( "path_to_tflite_model" )NLUが初期化されたので、先に進み、その部分をコールバックに追加できます。
@ pipeline . event
def on_recognize ( context ):
results = nlu ( context . transcript )名前が示すように、テキストからスピーチへのテキストは、テキストを音声オーディオに変換します。これは、アプリケーションに音声を与える方法です。 SpokeStackアカウントにサインアップすると、1つのTTS音声を無料で提供しますが、真にカスタム音声をトレーニングするために連絡することができます。 TTS APIキーは、 SpeechRecognizerと同じです。基本的なTTS初期化は次のとおりです。
from spokestack . tts . manager import TextToSpeechManager
from spokestack . tts . clients . spokestack import TextToSpeechClient
from spokestack . io . pyaudio import PyAudioOutput
client = TextToSpeechClient ( "spokestack_id" , "spokestack_secret" )
output = PyAudioOutput ()
manager = TextToSpeechManager ( client , output )
manager . synthesize ( "welcome to spokestack" )シンプルなTTSコールバックを実証するには、ASRが認識したものを読み返す何かをセットアップしましょう。
@ pipeline . event
def on_recognize ( context ):
manager . synthesize ( context . transcript )ルートプロジェクトディレクトリから:
cd docs
make clean && make htmlこのプロジェクトは、Pypiを使用して配布されます。以下は、インストールのために構築するコマンドです。
python setup.py clean --all ; rm -r ./dist
python setup.py sdist bdist_wheelTwineは、ホイールとソースの分布をアップロードするために使用されます。
twine upload dist/ * Copyright 2021 Spokestack、Inc。
Apacheライセンス、バージョン2.0(「ライセンス」)に基づいてライセンスされています。ライセンスに準拠している場合を除き、このファイルを使用することはできません。ここでライセンスのコピーを入手できます
適用法で要求されていないか、書面で合意されていない限り、ライセンスに基づいて配布されたソフトウェアは、明示または黙示のいずれかの保証または条件なしに、「現状のまま」に基づいて配布されます。ライセンスに基づく権限と制限を管理する特定の言語のライセンスを参照してください。