.. note::
こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 愛好者コミュニティへようこそ! Raspberry Pi、Arduino、ESP32 について、他の愛好者と一緒に深く掘り下げて学びましょう。
**参加する理由は?**
- **専門的なサポート**: 購入後の問題や技術的な課題を、コミュニティやチームの助けを借りて解決できます。
- **学びと共有**: スキルを高めるためのヒントやチュートリアルを交換しましょう。
- **限定プレビュー**: 新しい製品発表や先行プレビューに早期アクセスできます。
- **特別割引**: 最新製品に対する独占的な割引を楽しめます。
- **祝典プロモーションとプレゼント**: プレゼントキャンペーンや季節ごとのプロモーションに参加できます。
👉 私たちと一緒に探求し、創造する準備はできましたか? [|link_sf_facebook|] をクリックして、今すぐ参加しましょう!
.. _py_stt:
15. STT (音声認識)
==============================================
この例では、PiCrawler で STT (音声認識) モジュールを使用する方法を示します。
ロボットは内蔵マイクを通してあなたの声を聞き、リアルタイムでテキストに変換します。
**コードの実行**
.. raw:: html
.. code-block::
cd ~/picrawler/examples
sudo python3 15_stt.py
プログラムを実行すると、言語設定とプロンプトが表示されます。
ロボットが聞き取りを開始します — マイクに向かって話すと、認識された
テキストがターミナルに表示されます。
音声が検出されない場合は、``(no speech detected)`` と表示されます。
**Ctrl+C** で終了します。
**事前準備**
以下が完了していることを確認してください:
* :ref:`install_all_modules` — ``robot-hat``、``vilib``、``picrawler`` モジュールをインストールし、スクリプト ``i2samp.sh`` を実行します。
**コード**
.. note::
以下のコードを **変更/リセット/コピー/実行/停止** できます。ただし、その前に
``picrawler\examples`` のようなソースコードのパスに移動する必要があります。
コードを変更した後、直接実行して効果を確認できます。
.. raw:: html
.. code-block:: python
#!/usr/bin/env python3
from robot_hat.stt import STT
# sunfounder_voice_assistant STT モジュールを使用した音声認識デモ
# Ctrl+C で終了します
# 言語設定: "en-us", "zh-cn" など
LANGUAGE = "en-us"
def main():
print("=== PiCrawler 音声認識デモ ===")
print(f"言語: {LANGUAGE}")
print("Ctrl+C で終了します")
print()
stt = STT(language=LANGUAGE)
try:
while True:
print("聞き取り中... (話しかけてください)")
text = stt.listen()
if text:
print(f">>> {text}")
else:
print("(音声が検出されませんでした)")
except KeyboardInterrupt:
print("\n終了中...")
if __name__ == "__main__":
main()
**仕組み**
#. STT モジュールのインポート
.. code-block:: python
from robot_hat.stt import STT
``STT`` クラスは ``robot_hat`` パッケージの一部です。低レベルの
オーディオキャプチャと音声認識処理をすべて処理します。
#. 言語の設定
.. code-block:: python
LANGUAGE = "en-us"
``LANGUAGE`` 変数で認識言語を設定します。必要に応じて
``"zh-cn"`` (中国語) などの他のサポートコードに変更できます。
#. STT インスタンスの作成
.. code-block:: python
stt = STT(language=LANGUAGE)
選択した言語用に設定された STT オブジェクトを作成します。このオブジェクトは
マイクと音声認識エンジンを初期化します。
#. 聞き取りループ
.. code-block:: python
while True:
print("聞き取り中... (話しかけてください)")
text = stt.listen()
if text:
print(f">>> {text}")
else:
print("(音声が検出されませんでした)")
プログラムは無限ループを実行し、各反復で:
- ユーザーに話すよう促します。
- ``stt.listen()`` を呼び出し、音声が検出されて処理されるまでブロックします。
- 認識されたテキストを文字列として返すか、何も理解できなかった場合は
``None`` / 空文字列を返します。
- 結果をターミナルに表示します。
#. 正常終了
.. code-block:: python
except KeyboardInterrupt:
print("\n終了中...")
**Ctrl+C** を押すと ``KeyboardInterrupt`` が発生し、終了メッセージを
表示してプログラムをクリーンに終了します。