LiveKit ಮತ್ತು FastAPI ಬಳಸಿ ರಿಯಲ್-ಟೈಮ್ ವಾಯ್ಸ್ AI ಅನ್ನು ನಿರ್ಮಿಸುವುದು

ವಾಯ್ಸ್ AI ಅನ್ನು ಡೆಮೊ ಮಾಡುವುದು ಸುಲಭ. ಆದರೆ ಪ್ರೊಡಕ್ಷನ್ ಮಟ್ಟದ ವಾಯ್ಸ್ AI ಅನ್ನು ಬಿಡುಗಡೆ ಮಾಡುವುದು ಕಷ್ಟ.

ಒಂದು ಡೆಮೊದಲ್ಲಿ ಒಂದು ಸುಗಮ ಹಾದಿ (happy path) ಇರುತ್ತದೆ ಮತ್ತು ಯಾವುದೇ ಲೋಡ್ ಇರುವುದಿಲ್ಲ. ಆದರೆ ಪ್ರೊಡಕ್ಷನ್‌ನಲ್ಲಿ ಜಿಟ್ಟರ್ (jitter), ಬಳಕೆದಾರರ ಅಡ್ಡಿಪಡಿಸುವಿಕೆ (interruptions), ಮರುಸಂಪರ್ಕಗಳು (reconnects) ಮತ್ತು ಪ್ರೊವೈಡರ್ ವೈಫಲ್ಯಗಳು ಇರುತ್ತವೆ. ಇವುಗಳಿಗಾಗಿ ನೀವು ವಿನ್ಯಾಸಗೊಳಿಸದಿದ್ದರೆ, ನಿಮ್ಮ AI ರೋಬೋಟಿಕ್ ಆಗಿ ಕೇಳಿಸುತ್ತದೆ.

ಇಂತಹ ವ್ಯವಸ್ಥೆಗಳನ್ನು ನಿರ್ಮಿಸಲು ಕೇವಲ ಫ್ರೇಮ್‌ವರ್ಕ್ ಟ್ರಿಕ್ಸ್ ಸಾಕಾಗುವುದಿಲ್ಲ, ಅದಕ್ಕೆ ಸ್ಮಾರ್ಟ್ ಆರ್ಕಿಟೆಕ್ಚರ್ ಅಗತ್ಯವಿದೆ. ಸ್ಟೇಟ್ (state) ಎಲ್ಲಿ ಇರಬೇಕು ಮತ್ತು ಲೇಟೆನ್ಸಿ (latency) ಹೇಗೆ ಹೆಚ್ಚಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ನೀವು ನಿರ್ಧರಿಸಬೇಕು.

ಒಂದು ಸದೃಢವಾದ ವಾಯ್ಸ್ AI ಸ್ಟ್ಯಾಕ್‌ಗೆ ಈ ಕೆಳಗಿನ ಪದರಗಳು (layers) ಅಗತ್ಯವಿವೆ:

• ಕ್ಲೈಂಟ್ (Client): ಮೈಕ್ ಇನ್‌ಪುಟ್ ಅನ್ನು ಸೆರೆಹಿಡಿಯುತ್ತದೆ ಮತ್ತು ಆಡಿಯೋವನ್ನು ಪ್ಲೇ ಮಾಡುತ್ತದೆ. • ವಾಯ್ಸ್ ಸೆಷನ್ ಲೇಯರ್ (Voice session layer): ಅಥೆಂಟಿಕೇಶನ್ ಮತ್ತು ಕನೆಕ್ಷನ್ ಲೈಫ್‌ಸೈಕಲ್ ಅನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. • LiveKit ರೂಮ್ (LiveKit room): ಕಡಿಮೆ ಲೇಟೆನ್ಸಿ ಇರುವ ಮೀಡಿಯಾ ಟ್ರಾನ್ಸ್‌ಪೋರ್ಟ್ ಅನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. • STT ಪೈಪ್‌ಲೈನ್ (STT pipeline): ಮಾತನ್ನು ಪಠ್ಯವಾಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ. • LLM ಆರ್ಕೆಸ್ಟ್ರೇಶನ್ (LLM orchestration): ಪ್ರಾಂಪ್ಟ್‌ಗಳು ಮತ್ತು ಟೂಲ್ ಕಾಲ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. • TTS ಪೈಪ್‌ಲೈನ್ (TTS pipeline): ಪಠ್ಯವನ್ನು ಆಡಿಯೋ ಆಗಿ ಸ್ಟ್ರೀಮ್ ಮಾಡುತ್ತದೆ. • ಬ್ಯಾಕೆಂಡ್ APIs (Backend APIs): ಸ್ಟೇಟ್ ಮತ್ತು ಬಿಸಿನೆಸ್ ಲಾಜಿಕ್ ಗಾಗಿ FastAPI ಸೇವೆಗಳು. • ಅಬ್ಸರ್ವೇಬಿಲಿಟಿ (Observability): ಲೇಟೆನ್ಸಿಯನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ಮೆಟ್ರಿಕ್ಸ್ ಮತ್ತು ಲಾಗ್‌ಗಳು.

ಪದರಗಳನ್ನು ಸ್ವತಂತ್ರವಾಗಿ ಇರಿಸಿ. ಕ್ಲೈಂಟ್‌ನಲ್ಲಿ ತರ್ಕ (logic) ಬಹಳ ಕಡಿಮೆ ಇರಬೇಕು. ಅದು ಕೇವಲ ಆಡಿಯೋವನ್ನು ಸೆರೆಹಿಡಿಯಬೇಕು ಮತ್ತು UI ಅನ್ನು ನಿರ್ವಹಿಸಬೇಕು.

LiveKit ಗಾಗಿ ಅಲ್ಪಾವಧಿಯ ಟೋಕನ್‌ಗಳನ್ನು ರಚಿಸಲು FastAPI ಬಳಸಿ. ಇದು ರೂಮ್ ಪ್ರವೇಶವನ್ನು ಸುರಕ್ಷಿತವಾಗಿರಿಸುತ್ತದೆ. ಸ್ಥಿರವಾದ ID ನೊಂದಿಗೆ ಸರ್ವರ್‌ನಲ್ಲಿ ಸೆಷನ್ ರೆಕಾರ್ಡ್‌ಗಳನ್ನು ಸಂಗ್ರಹಿಸಿ. ಬಳಕೆದಾರರ ID, ರೂಮ್ ID ಮತ್ತು ಪ್ರಸ್ತುತ ಸ್ಟೇಟ್ ಅನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಿ. ಬಳಕೆದಾರರು ಮರುಸಂಪರ್ಕಗೊಂಡಾಗ, ಬ್ಯಾಕೆಂಡ್ ತಕ್ಷಣವೇ ಸಂದರ್ಭವನ್ನು (context) ಮರುಪಡೆಯುತ್ತದೆ.

ವಾಯ್ಸ್ AI ಎಂಬುದು ಲೇಟೆನ್ಸಿಯ ಆಟ. ಪ್ರತಿಕ್ರಿಯೆ ತಡವಾದರೆ, ಬಳಕೆದಾರರು ಅಡ್ಡಿಪಡಿಸುತ್ತಾರೆ.

ಪ್ರತಿ ಹಂತಕ್ಕೂ ಲೇಟೆನ್ಸಿ ಬಜೆಟ್ ನಿಗದಿಪಡಿಸಿ:

  • STT ಲೇಟೆನ್ಸಿ
  • ಆರ್ಕೆಸ್ಟ್ರೇಶನ್ ಲೇಟೆನ್ಸಿ
  • ಟೂಲ್ ಕಾಲ್ ಲೇಟೆನ್ಸಿ
  • TTS ಸ್ಟಾರ್ಟ್ಅಪ್ ಸಮಯ
  • ಮೊದಲ ಆಡಿಯೋ ಬೈಟ್ ಬರುವ ಸಮಯ

ಅಡ್ಡಿಪಡಿಸುವಿಕೆಯನ್ನು (interruptions) ಪ್ರಮುಖ ವೈಶಿಷ್ಟ್ಯವಾಗಿ ಬೆಂಬಲಿಸಿ. ಬಳಕೆದಾರರು ಮಾತನಾಡುವಾಗ, ಕ್ಲೈಂಟ್ ಅಡ್ಡಿಪಡಿಸುವ ಘಟನೆಯನ್ನು (interrupt event) ಕಳುಹಿಸಬೇಕು. ಸಿಸ್ಟಮ್ ಪ್ರಸ್ತುತ TTS ಸ್ಟ್ರೀಮ್ ಅನ್ನು ರದ್ದುಗೊಳಿಸಬೇಕು ಮತ್ತು ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಅಡ್ಡಿಪಡಿಸಲಾಗಿದೆ ಎಂದು ಗುರುತಿಸಬೇಕು. ಇದು AI ಹಳೆಯ ಸಂದರ್ಭವನ್ನು (stale context) ಮುಂದಿನ ಹಂತಕ್ಕೆ ತರದಂತೆ ತಡೆಯುತ್ತದೆ.

ಮರುಪ್ರಯತ್ನಗಳನ್ನು (retries) ಸುರಕ್ಷಿತಗೊಳಿಸಿ. ಟೂಲ್ ಕಾಲ್‌ಗಳಿಗಾಗಿ ಐಡೆಂಪೊಟೆನ್ಸಿ ಕೀಗಳನ್ನು (idempotency keys) ಬಳಸಿ. ಇದರಿಂದ ಒಂದು ವಿನಂತಿ ವಿಫಲಗೊಂಡು ಮರುಪ್ರಯತ್ನ ಮಾಡಿದಾಗ, ನೀವು ಒಂದೇ ಕ್ರಿಯೆಯನ್ನು ಎರಡು ಬಾರಿ ಮಾಡುವುದಿಲ್ಲ (ಉದಾಹರಣೆಗೆ, ಗ್ರಾಹಕರಿಂದ ಎರಡು ಬಾರಿ ಹಣ ವಸೂಲಿ ಮಾಡುವುದು).

ಬಳಕೆದಾರರ ಅನುಭವಕ್ಕೆ ಮುಖ್ಯವಾದ ಮೆಟ್ರಿಕ್ಸ್‌ಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಿ:

  • ಎಂಡ್-ಟು-ಎಂಡ್ ಟರ್ನ್ ಲೇಟೆನ್ಸಿ
  • ಮೊದಲ ಆಡಿಯೋ ಬೈಟ್ ಬರುವ ಸಮಯ
  • ಪ್ರತಿ ಸೆಷನ್‌ನ ಅಡ್ಡಿಪಡಿಸುವಿಕೆಯ ದರ (interrupt rate)
  • ಮರುಸಂಪರ್ಕದ ಆವರ್ತನ (reconnect frequency)

ವಾಯ್ಸ್ AI ಎಂಬುದು ಕೇವಲ LLM ಸಮಸ್ಯೆ ಅಲ್ಲ. ಇದು ಸಿಸ್ಟಮ್ಸ್ ಸಮಸ್ಯೆ. ಇದು ನೆಟ್‌ವರ್ಕಿಂಗ್, ಸ್ಟೇಟ್, ಸೆಕ್ಯೂರಿಟಿ ಮತ್ತು ಡಿಸೈನ್ ಅನ್ನು ಒಳಗೊಂಡಿದೆ.

ಅಡಿಪಾಯವನ್ನು ನಿರ್ಮಿಸಲು LiveKit ಮತ್ತು FastAPI ಬಳಸಿ. ಮುನ್ಸೂಚನೆ ನೀಡಬಹುದಾದ ಒಪ್ಪಂದಗಳು (predictable contracts), ಸ್ಪಷ್ಟವಾದ ಸ್ಟೇಟ್ ಮತ್ತು ಕಟ್ಟುನಿಟ್ಟಾದ ಲೇಟೆನ್ಸಿ ಲೂಪ್‌ಗಳ ಮೇಲೆ ಗಮನಹರಿಸಿ. ಹೀಗೆ ಮಾಡಿದಾಗ ಮಾತ್ರ ಮನುಷ್ಯರಂತೆಯೇ ಅನುಭವ ನೀಡುವ ಸಾಫ್ಟ್‌ವೇರ್ ಅನ್ನು ನೀವು ನಿರ್ಮಿಸಲು ಸಾಧ್ಯ.

Source: https://dev.to/joshua_fields_0ecc952c450/building-real-time-voice-ai-applications-with-livekit-and-fastapi-pae

Optional learning community: https://t.me/GyaanSetuAi