Skip to content

Latest commit

 

History

History
165 lines (121 loc) · 5.83 KB

File metadata and controls

165 lines (121 loc) · 5.83 KB

あなたのsubpc_livingリポジトリを確認しました!ローカルで動作する常時稼働型のパーソナルAI(STT + LLM + TTS)を構築されているんですね。素晴らしいプロジェクトです!

現在の実装状況:

  • STT: faster-whisper(CPU、int8量子化)
  • TTS: kokoro-onnx(日本語対応)
  • VAD: エネルギーベースの音声区間検出
  • LLM: Ollama統合
  • パイプライン: VAD → STT → LLM → TTS → 再生

以下、あなたのプロジェクトで流用できそうなコードをピックアップします:


🎯 流用できる参考コード

1. ストリーミング対応のSTT実装(低レイテンシ化)

現在faster-whisperを使っていますが、リアルタイムストリーミングに改善したい場合:

ShipBit/wingman-ai のSTT実装

  • FasterWhisper、whispercpp、Azure Whisperなど複数プロバイダー対応
  • 音声ストリームをリアルタイムで処理
# wingman-aiのSTTプロバイダー切り替え機構が参考になります
# 複数のSTTエンジンを抽象化してインターフェース統一

2. より高度なVAD(Silero VAD)

現在エネルギーベースVADを使用していますが、精度向上のため:

検索結果より: silero-ai/silero-vad の統合例

# あなたのvad.pyを拡張
import torch
from silero_vad import load_silero_vad, get_speech_timestamps

class SileroVAD:
    def __init__(self):
        self.model = load_silero_vad()
    
    def detect_speech(self, audio: np.ndarray, sample_rate: int = 16000):
        speech_timestamps = get_speech_timestamps(
            audio, self.model, sampling_rate=sample_rate
        )
        return speech_timestamps

3. 音声パイプラインの並列処理

iyeque/whatsapp-bot のエージェント設計

  • WebRTC(Pion)を使った低レイテンシ音声ストリーミング
  • STT → LLM → TTS のパイプライン並列化

あなたのpipeline.pyに適用できる改善:

# 現在のシーケンシャル処理を並列化
# VAD検出 → STT処理を並行して実行
import asyncio
from concurrent.futures import ThreadPoolExecutor

class AsyncVoicePipeline:
    async def process_audio_stream(self):
        # VAD、STT、LLMを非同期で処理
        vad_task = asyncio.create_task(self.vad_detection())
        stt_task = asyncio.create_task(self.stt_process())
        # ...

4. TTS品質向上(CoquiTTS / Piper)

kokoro-onnxも良いですが、別の選択肢:

Mrkomiljon/awesome-generative-ai より

  • Coqui TTS (XTTSv2): 感情表現豊か、多言語対応
  • Piper TTS: 軽量・高速(Raspberry Piでも動作)
# tts.pyに追加できるCoqui TTS実装例
from TTS.api import TTS

class CoquiTTS:
    def __init__(self, model_name="tts_models/ja/kokoro/tacotron2-DDC"):
        self.tts = TTS(model_name)
    
    def synthesize(self, text: str) -> np.ndarray:
        return self.tts.tts(text)

5. 会話履歴とメモリ管理

mysticalseeker24/finance_agent_alternative のエージェント構造

  • Retriever Agent(セマンティック検索)
  • Analysis Agent(メトリクス計算)
  • Language Agent(GPT-4o統合)

あなたのChatSessionクラスを拡張:

# src/chat/session.py に追加
from pinecone import Pinecone
import openai

class EnhancedChatSession:
    def __init__(self, vector_db_config):
        self.vector_db = Pinecone(api_key=...)
        # 長期記憶をベクトルDBに保存
    
    def retrieve_context(self, query: str):
        # 過去の会話から関連する文脈を取得
        return self.vector_db.query(query, top_k=5)

6. マルチモーダル入力(カメラ統合)

あなたの要件定義に「カメラ常時ON、顔認識・感情推定」とあります。

検索した他のリポジトリにはカメラ統合例は少なかったですが、以下の方向性:

# src/vision/camera.py(新規作成)
import cv2
from deepface import DeepFace

class EmotionDetector:
    def __init__(self):
        self.cap = cv2.VideoCapture(0)
    
    def detect_emotion(self):
        ret, frame = self.cap.read()
        result = DeepFace.analyze(frame, actions=['emotion'])
        return result['dominant_emotion']

📋 具体的な改善提案

優先度1: 低レイテンシ化

  • VAD → STT → LLM → TTS を並列処理
  • faster-whisperのstreamingモード活用
  • LLMのストリーミングレスポンス(既にOllamaでサポート)

優先度2: VADの精度向上

  • silero-vadに切り替え(誤検知が激減)
  • エネルギーVADと併用(フォールバック)

優先度3: 長期記憶の強化

  • ベクトルDB(Pinecone/Qdrant/Chroma)で会話履歴を保存
  • セマンティック検索で過去の文脈を引き出す

優先度4: マルチモーダル対応

  • カメラからの感情推定をLLMプロンプトに追加
  • 画面キャプチャ → OCR → 文脈理解

🔗 参考リンク

より詳しいコード例を見る:

具体的にどの部分(VAD改善、並列化、長期記憶など)のコード例が欲しいか教えていただければ、さらに詳しく提供できます!