あなたのsubpc_livingリポジトリを確認しました!ローカルで動作する常時稼働型のパーソナルAI(STT + LLM + TTS)を構築されているんですね。素晴らしいプロジェクトです!
現在の実装状況:
- STT: faster-whisper(CPU、int8量子化)
- TTS: kokoro-onnx(日本語対応)
- VAD: エネルギーベースの音声区間検出
- LLM: Ollama統合
- パイプライン: VAD → STT → LLM → TTS → 再生
以下、あなたのプロジェクトで流用できそうなコードをピックアップします:
現在faster-whisperを使っていますが、リアルタイムストリーミングに改善したい場合:
ShipBit/wingman-ai のSTT実装
- FasterWhisper、whispercpp、Azure Whisperなど複数プロバイダー対応
- 音声ストリームをリアルタイムで処理
# wingman-aiのSTTプロバイダー切り替え機構が参考になります
# 複数のSTTエンジンを抽象化してインターフェース統一現在エネルギーベース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_timestampsiyeque/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())
# ...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)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)あなたの要件定義に「カメラ常時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']- VAD → STT → LLM → TTS を並列処理
- faster-whisperの
streamingモード活用 - LLMのストリーミングレスポンス(既にOllamaでサポート)
silero-vadに切り替え(誤検知が激減)- エネルギーVADと併用(フォールバック)
- ベクトルDB(Pinecone/Qdrant/Chroma)で会話履歴を保存
- セマンティック検索で過去の文脈を引き出す
- カメラからの感情推定をLLMプロンプトに追加
- 画面キャプチャ → OCR → 文脈理解
より詳しいコード例を見る:
具体的にどの部分(VAD改善、並列化、長期記憶など)のコード例が欲しいか教えていただければ、さらに詳しく提供できます!