Mobil Uygulamalar
Açık Kaynak

Lain AI: Akış Tabanlı DeepSeek Persona ve Ses İstemcisi

DartFlutterProviderDeepSeek APISSE StreamingText-to-Speech (TTS)Speech-to-Text (STT)

DeepSeek API'sini kullanarak 'Lain Iwakura' personası ile sohbet simüle eden mobil yapay zeka arayüzü. Gerçek zamanlı SSE akışı, asenkron parçalı (chunked) Text-to-Speech ve özel retro CRT arayüz katmanı içerir.

Teknoloji Yığını

DartFlutterProviderDeepSeek APISSE StreamingText-to-Speech (TTS)Speech-to-Text (STT)

Sistem Metrikleri

Byte-chunk çözümleme işlemlerini asenkron görevlere izole ederek aktif API akışı sırasında UI donmasını (freezing) engeller
Tüm LLM yanıtını beklemek yerine metni ilk noktalama işaretinde seslendirerek algılanan TTS gecikmesini (latency) büyük ölçüde azaltır
CRT scanline efekti için uygulanan verimli `CustomPainter`, minimum render yükü sağlayarak stabil 60 FPS performansını korur

Bunu Neden İnşa Ettim?

"Çoğu yapay zeka istemcisi, REST uç noktalarının (endpoints) etrafına sarılmış sıradan arayüzlerden ibarettir. Serial Experiments Lain'den ilham alarak, gerçek zamanlı Server-Sent Events (SSE) akışının ve anında (on-the-fly) Metin Okuma (TTS) teknolojisinin sınırlarını zorlayan, oldukça sürükleyici ve karakter odaklı bir yapay zeka istemcisi oluşturmak istedim. Bu proje; asenkron metin akışlarını yönetmek, cümleleri mantıksal olarak tamponlamak (buffering) ve 'yaşayan' dijital bir varlığı simüle ederken arayüzün (UI) donmasını engellemek üzerine bir mimari çalışmadır."

Mimari & Kararlar

Uygulama, reaktif durum yönetimi için `Provider` ile Flutter kullanır. Çekirdek motor (`ChatProvider`), sürekli bir `http.Client` akışı (stream) kullanarak DeepSeek API'sine bağlanır. JSON parçaları (chunks) SSE üzerinden geldikçe satır satır çözümlenir (`utf8.decoder`, `LineSplitter()`), ayrıştırılır ve bir `MarkdownBody` widget'ı aracılığıyla gerçek zamanlı olarak arayüze işlenir. Eşzamanlı olarak metin akışı, Regex tabanlı bir cümle tamponuna (buffer) beslenir. Tamamlanmış bir cümle (noktalama işaretleriyle) tespit edildiğinde, anında asenkron bir TTS kuyruğuna (`flutter_tts`) itilir; böylece ağ isteğinin (payload) tamamen inmesi beklenmeden yapay zeka anında konuşmaya başlar.

Temel Özellikler

  • 01.Sıfır gecikmeli LLM metin akışı için gerçek zamanlı Server-Sent Events (SSE) ayrıştırması
  • 02.Cümleleri mantıksal olarak bölüp anında seslendiren asenkron TTS (Metin Okuma) kuyruğu
  • 03.Eller serbest sesli etkileşim için yerel Speech-to-Text (STT) entegrasyonu
  • 04.GPU optimize edilmiş özel CRT tarama çizgisi (`CustomPainter`) katmanı ve sese duyarlı UI animasyonları
  • 05.Çevrimdışı çoklu oturum sohbet geçmişi yönetimi için `path_provider` ile kalıcı yerel depolama
Bu proje, mobil bir ortamda akan (streaming) ham LLM verilerinin nasıl işleneceğini kusursuz bir şekilde göstermektedir. Ham SSE verilerini araya girerek yakalayıp, delta parçalarını çıkararak ve bunları yerel TTS motoru için mantıksal cümle blokları halinde tamponlayarak, uygulama son derece duyarlı ve sohbete dayalı bir akış elde eder. Enjekte edilen sistem komutuna (system prompt) sıkı sıkıya bağlı kalınması, 'Lain' personasını API düzeyinde zorunlu kılar ve standart bir LLM uç noktasını tamamen sürükleyici, ses özellikli bir dijital yol arkadaşına dönüştürür.