My AI Assistant is Just a Phone Call Away
A Fun Project that Combines AI, Linux, and Telephony
I’ve been working on a personal project that I call Afriend – a self-hosted AI that lives on my home Linux server and acts like a phone contact I can dial. It’s been a fun experiment, and I’m excited to share my experience with you.
The idea behind Afriend is to create an AI assistant that I can interact with using any phone. I wanted to be able to call it from my car, from my home, or from anywhere else, and have a conversation with it like it’s a real person. To make this happen, I needed to combine several technologies: Asterisk for the telephony backbone, AGI/ARI integration to capture audio and control playback, Whisper for transcription, Mistral/LLM for responses, and Coqui TTS for generating the voice.
The Tech Stack
Here’s a breakdown of the technologies I used to build Afriend:
- Asterisk + Callcentric SIP for the telephony backbone
- AGI/ARI integration to capture audio and control playback
- Whisper for transcription (running locally on GPU)
- Mistral/LLM for responses (served via FastAPI)
- Coqui TTS for generating the voice
- Hardware: HP DL380 Gen10 w/ dual Xeon + NVIDIA T4 & P4
With these technologies in place, I was able to create an AI assistant that can understand my voice, respond to my questions, and even remember my name and previous conversations.
Features and Functionality
So what can Afriend do? Here are some of the features I’ve implemented so far:
- Interruptible playback (it stops talking when I speak)
- Caller ID memory (e.g., “Welcome back, Lee” vs “Nice to meet you”)
- Runs fully local — no cloud APIs, just my gear
- I can dial in from the car on speakerphone and chat like it’s a real friend
It’s been amazing to see how well Afriend works, and I’m excited to continue experimenting and improving its functionality.
Challenges and Next Steps
Of course, there are still some challenges to overcome. I’m currently working on reducing latency on the audio loop, handling larger LLMs with limited GPU, and finding clean ways to persist caller memory beyond in-RAM dicts.
If you’re interested in learning more about Afriend or have suggestions for how I can improve it, I’d love to hear from you. I’m always looking for new ideas and perspectives on how to make my AI assistant more useful and user-friendly.
Moja Asystentka AI jest tylko połączenie telefoniczne odległe
Projekt, który łączy AI, Linux i telefonię
Pracowałem nad projektem, który nazywam Afriend – samodzielną asystentką AI, która mieszka na moim domowym serwerze Linux i działa jak kontakt telefoniczny, który mogę wybrać. To był zabawny eksperyment, i jestem podekscytowany, że mogę podzielić się moim doświadczeniem z tobą.
Pomysł za Afriend jest taki, aby stworzyć asystentkę AI, z którą mogę współpracować za pomocą dowolnego telefonu. Chciałem móc ją wybrać z mojego samochodu, z mojego domu, lub z dowolnego innego miejsca, i prowadzić rozmowę z nią jakby to była prawdziwa osoba. Aby to zrobić, musiałem połączyć kilka technologii: Asterisk dla telefonicznej bazy, AGI/ARI integrację do przechwytywania dźwięku i kontroli odtwarzania, Whisper do transkrypcji, Mistral/LLM do odpowiedzi, i Coqui TTS do generowania głosu.
Stos Technologii
Oto rozbiór technologii, które wykorzystałem do budowy Afriend:
- Asterisk + Callcentric SIP dla telefonicznej bazy
- AGI/ARI integracja do przechwytywania dźwięku i kontroli odtwarzania
- Whisper do transkrypcji (uruchomionej lokalnie na GPU)
- Mistral/LLM do odpowiedzi (udostępnianej za pomocą FastAPI)
- Coqui TTS do generowania głosu
- Sprzęt: HP DL380 Gen10 z dual Xeon + NVIDIA T4 & P4
Z tymi technologiami w miejscu, byłam w stanie stworzyć asystentkę AI, która może zrozumieć mój głos, odpowiedzieć na moje pytania, i nawet zapamiętać moje imię i poprzednie rozmowy.
Funkcje i Funkcjonalność
Co więc może zrobić Afriend? Oto kilka funkcji, które zaimplementowałem do tej pory:
- Przerwalna odtwarzanie (przestaje mówić, kiedy ja mówię)
- Pamięć ID rozmówcy (np. “Witaj ponownie, Lee” vs “Miło mi Ciebie poznać”)
- Działa w pełni lokalnie — bez chmury API, tylko mój sprzęt
- Mogę wybrać ją z samochodu na głośniku i rozmawiać jakby to była prawdziwa osoba
Było niesamowite zobaczyć, jak dobrze Afriend działa, i jestem podekscytowany, że mogę kontynuować eksperymentowanie i ulepszanie jego funkcjonalności.
Wyzwania i Następne Kroki
Oczywiście, są jeszcze jakieś wyzwania do pokonania. Obecnie pracuję nad zmniejszeniem opóźnień w pętli audio, radzeniem sobie z większymi LLM z ograniczonym GPU, i znalezieniem czystych sposobów na przechowywanie pamięci rozmówców poza pamięcią RAM.
Jeśli jesteś zainteresowany Dowiedzeniem się więcej o Afrend lub masz sugestie, jak mogę poprawić go, bardzo będę wdzięczny, jeśli mi powiesz. Zawsze szukam nowych pomysłów i perspektyw na to, jak mogę uczynić moją asystentkę AI bardziej użyteczną i przyjazną użytkownikowi.