config.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. # 智能音箱配置管理
  2. import os
  3. from dotenv import load_dotenv
  4. load_dotenv()
  5. class Config:
  6. """所有配置项"""
  7. # ===== ASR =====
  8. ASR_PROVIDER = os.getenv('ASR_PROVIDER', 'openai_whisper')
  9. OPENAI_API_KEY = os.getenv('OPENAI_API_KEY', '')
  10. OPENAI_BASE_URL = os.getenv('OPENAI_BASE_URL', 'https://api.openai.com/v1')
  11. # ===== LLM =====
  12. LLM_PROVIDER = os.getenv('LLM_PROVIDER', 'deepseek')
  13. LLM_API_KEY = os.getenv('LLM_API_KEY', '')
  14. LLM_BASE_URL = os.getenv('LLM_BASE_URL', 'https://api.deepseek.com/v1')
  15. LLM_MODEL = os.getenv('LLM_MODEL', 'deepseek-chat')
  16. # ===== TTS(核心:你的服务)⭐ =====
  17. TTS_BASE_URL = os.getenv('TTS_BASE_URL', 'http://localhost:3000')
  18. TTS_API_KEY = os.getenv('TTS_API_KEY', '')
  19. TTS_VOICE_ID = os.getenv('TTS_VOICE_ID', 'female-shaonv')
  20. TTS_VOICE_NAME = os.getenv('TTS_VOICE_NAME', '温柔女声')
  21. # ===== 音频 =====
  22. AUDIO_SAMPLE_RATE = int(os.getenv('AUDIO_SAMPLE_RATE', '16000'))
  23. AUDIO_CHANNELS = int(os.getenv('AUDIO_CHANNELS', '1'))
  24. AUDIO_FORMAT = os.getenv('AUDIO_FORMAT', 'wav')
  25. MAX_RECORD_SECONDS = int(os.getenv('MAX_RECORD_SECONDS', '10'))
  26. SILENCE_THRESHOLD = int(os.getenv('SILENCE_THRESHOLD', '500'))
  27. SILENCE_DURATION_MS = int(os.getenv('SILENCE_DURATION_MS', '800'))
  28. # ===== 系统提示词 =====
  29. SYSTEM_PROMPT = os.getenv(
  30. 'SYSTEM_PROMPT',
  31. '你是配音侠,一个友好的 AI 助手。请用简短的中文回复(不超过 50 字)。'
  32. )
  33. @classmethod
  34. def validate(cls):
  35. """验证必要配置"""
  36. errors = []
  37. if cls.ASR_PROVIDER == 'openai_whisper' and not cls.OPENAI_API_KEY:
  38. errors.append('缺少 OPENAI_API_KEY')
  39. if not cls.LLM_API_KEY:
  40. errors.append('缺少 LLM_API_KEY')
  41. if not cls.TTS_BASE_URL:
  42. errors.append('缺少 TTS_BASE_URL')
  43. if errors:
  44. raise ValueError('配置错误:\n ' + '\n '.join(errors))
  45. return True
  46. if __name__ == '__main__':
  47. try:
  48. Config.validate()
  49. print('✅ 配置验证通过')
  50. print(f' ASR: {Config.ASR_PROVIDER}')
  51. print(f' LLM: {Config.LLM_PROVIDER} / {Config.LLM_MODEL}')
  52. print(f' TTS: {Config.TTS_BASE_URL}')
  53. except ValueError as e:
  54. print(f'❌ {e}')
  55. print('请检查 .env 文件配置')