I Built a Local AI Assistant: 100% Free & No Subscriptions! — Transcript
Full transcript
- 0:00This is my AI assistant Ada, and she
- 0:01could do a lot of cool things. Whether
- 0:03it's controlling my home, doing some
- 0:06shopping for me on the web, or a whole
- 0:08lot of other stuff. But, Ada does have
- 0:10one big problem. Every time we ask her
- 0:12to do something, she needs to operate on
- 0:14Wi-Fi. So, she sends a prompt to
- 0:16Google's big data centers, we have to
- 0:18wait for a little bit, and then we
- 0:19eventually get a reply back. The problem
- 0:21with this is, one, she needs the
- 0:23internet to work. Also, our prompts are
- 0:25not private. And lastly, if you use this
- 0:27enough, it ends up not being free
- 0:30anymore, and you have to pay. So, today
- 0:31we're going to make a new AI assistant
- 0:33that's 100% local, 100% private, and
- 0:36100% free. So, the first step in
- 0:38building our AI assistant is picking an
- 0:40open-source model. So, I started with
- 0:42these three choices: Gemma 3, Qwen 3,
- 0:45[music]
- 0:45or DeepSeek-R 1. And each of these three
- 0:48open-source models comes [music] in
- 0:50different sizes, which are measured in
- 0:52parameters. In most cases, the more
- 0:53parameters a model has, the smarter it
- 0:56is. But, also, the more parameter a
- 0:58model does have, the more
- 1:00resource-intensive it's going to be. So,
- 1:02a very rough estimate is 1 billion
- 1:05parameters is equal to about 1 GB of
- 1:07VRAM. So, to start off with, I decided
- 1:09I'm going to pick a model between 1
- 1:11billion and 2 billion parameters. And
- 1:13that's because my GPU only has about 8
- 1:15GB of RAM. And if you take away the RAM
- 1:17that my operating system already uses,
- 1:19we only have about 6 GB of RAM to work
- 1:22with. So, we have to be very strategic
- 1:24on the models that we're choosing. So,
- 1:25these are the three models and sizes
- 1:27that I want to test. So, I went ahead
- 1:29and wrote a test script that's going to
- 1:31test the model in four different [music]
- 1:32areas. And we're going to be measuring
- 1:34accuracy, how much VRAM the models are
- 1:36taking up, and lastly, the latency, how
- 1:38long we have to wait before [music] the
- 1:39model starts typing up the answer. Okay,
- 1:41so after running the test, the results
- 1:43are
- 1:44kind of weird. So, first, each model
- 1:46performed the great for accuracy. All of
- 1:49them scored 90% or higher, with Qwen 3
- 1:52scoring the highest with 95%. But, also,
- 1:55Qwen 3 being the largest model, it took
- 1:57almost 2 GB of VRAM. And with Gemma 3
- 2:00and DeepSeek, only a little more than 1
- 2:02GB of VRAM. But, what really surprised
- 2:05me was the latency test. DeepSeek and
- 2:08Qwen both took about 100 ms, but Gemma 3
- 2:11took twice as long, which is a little
- 2:14weird just because it's a smaller model.
- 2:15I would assume it would be the fastest.
- 2:17But, with that, it really cuts down our
- 2:19options to either DeepSeek or Qwen. But,
- 2:22one cool thing about DeepSeek and Qwen
- 2:25is that they're both thinking models,
- 2:26which means that they could kind of
- 2:27think through problems. So, I'm curious
- 2:29to see how each of those models will
- 2:31perform if I run the same exact test,
- 2:34but with thinking on. So, after running
- 2:36the test with thinking on, both models
- 2:38did perform better on accuracy. Qwen
- 2:41scored 100% and DeepSeek got one more
- 2:44question right with 95%. But, the main
- 2:46downfall of using thinking is how long
- 2:48it takes the model to respond. It took
- 2:50Qwen 3 1,700 ms to respond back, and it
- 2:53took DeepSeek 1,900 ms to reply back.
- 2:56But, in comparison, Qwen 3 performed
- 2:58better on accuracy and is faster. So,
- 3:00that's going to be the model that we're
- 3:01using for this project. But, now we kind
- 3:03of have a problem. Are we going to use
- 3:05Qwen 3 with thinking or without
- 3:07thinking? But, I thought about it and I
- 3:09said, "Why not use both?" So, we could
- 3:12first send the user's prompt through a
- 3:14small quick model, and that quick model
- 3:16then decides to send it to either the
- 3:18Qwen version that is thinking or the
- 3:20Qwen version that is not thinking. And
- 3:22at first, I thought I came up with some
- 3:24new brilliant architecture for AI, but I
- 3:27did some research and this is just
- 3:29called a router. You have one AI that is
- 3:31smart enough to send specific prompts to
- 3:33a more specialized AI model. And
- 3:34thankfully, I already have a model in
- 3:36mind to do the job,
- 3:38>> [music]
- 3:38>> and that's Gemma. We're not using any
- 3:40version of Gemma, we're using a specific
- 3:43version of Gemma called Function Gemma.
- 3:45And what makes Function Gemma so special
- 3:46is that one, it's super small, only 270
- 3:49million parameters, and also, it was
- 3:51specifically trained
- 3:53>> [music]
- 3:53>> to output functions. If you don't know
- 3:54what a function is, it's just a tiny
- 3:56snippet of code that can be ran to
- 3:58execute a task. So first, to get a
- 4:00baseline, I wrote a script that's going
- 4:02to test the model on about 21 different
- 4:05variations on what it's to think or not
- 4:07to think. And I'm not expecting it to do
- 4:09well because in the model's
- 4:11documentation it says you are supposed
- 4:12to fine-tune the model on your own
- 4:15actual functions, so let's just see how
- 4:17well it does. And okay, to no one's
- 4:19surprise, the model performed bad as we
- 4:22expected. It scored a 52% getting 11 out
- 4:25of 21 questions right, and the average
- 4:28routing time was about 1,700
- 4:30milliseconds, which is
- 4:31>> [music]
- 4:32>> pretty slow. So now we're going to train
- 4:33the model. So basically you got to have
- 4:35a whole bunch of examples on what your
- 4:37input is and what the model should say.
- 4:40I did that with a total of 200 examples,
- 4:42100 for non-thinking, 100 for thinking.
- 4:44We're going to train the model on this
- 4:46and then we're going to see how it does.
- 4:47So the trained model did a lot better.
- 4:49It scored a 95% getting 20 out of 21
- 4:52right, and also the average routing time
- 4:54was 1,000 milliseconds, which is pretty
- 4:57[music] fast. So if we do a quick VRAM
- 4:59check, we know our operating system
- 5:00takes about 2.1 GB of VRAM, and now with
- 5:03Function Gemma combined with Qwen 3
- 5:05we're using another 2.3 GB of VRAM,
- 5:08which means we only have about 3.5 GB of
- 5:11RAM left. So we're starting to cut it
- 5:13close, and we still need to be able to
- 5:14speak to it and for it to speak back. So
- 5:17let's set that up. Well, first let's
- 5:18handle text-to-speech. And the model
- 5:20that we're going to use for this is
- 5:21called Piper TTS. And what makes Piper
- 5:23TTS so good is one, it's ran on the CPU,
- 5:26not the GPU. So we can run this and it's
- 5:29not going to slow down our Qwen 3 and
- 5:30Function Gemma. But also, usually if you
- 5:33run a model on your CPU, it's slow, but
- 5:35Piper is insanely fast.
- 5:37>> [music]
- 5:38>> So if we go ahead and run our
- 5:41demo file, let's just say type in
- 5:44"Hello." And let's see.
- 5:46Hello. Okay.
- 5:48>> assist you today?
- 5:48>> All right, that's That's pretty fast.
- 5:51Let's ask the little harder question.
- 5:52Let's see if it thinks. Explain inverse
- 5:55kinematics.
- 5:58All right, we see the thinking coming
- 5:59up. Perfect.
- 6:02>> Inverse kinematics is the process of
- 6:04determining the joint angles of a
- 6:05robotic arm or mechanism required to
- 6:07achieve a specific end effector position
- 6:09and orientation.
- 6:11>> Okay, so it's fast. The voice sounds It
- 6:14sounds half decent. I mean, we're
- 6:15working with what we have. So now, we
- 6:17need to add two things. We need to add a
- 6:18wake word, and we also need to add
- 6:20speech to text. So if you guys have
- 6:22watched the channel for any amount of
- 6:24time, you will know my go-to wake word
- 6:26is Ada. But in order to do this locally,
- 6:29I'll have to train the speech to text
- 6:30model on me saying Ada a trillion times.
- 6:33>> [music]
- 6:33>> And honestly, I really don't want to do
- 6:35that, especially because all my code is
- 6:37open source. As soon as I release it,
- 6:39you guys always ask, "How do I change
- 6:41the wake word name? Does the name have
- 6:42to be Ada?" So instead, we're going to
- 6:44use a pre-trained model that uses a wake
- 6:46word that hopefully everyone is happy
- 6:48with, which is Jarvis. So the way this
- 6:50is going to work is that as soon as I
- 6:52say Jarvis, the wake word model is going
- 6:54to flag the speech to text model to
- 6:57start converting my speech to text. Once
- 6:59that speech is converted to text, it's
- 7:01going to go to function Gemma. Function
- 7:03Gemma is going to say, "Hey, is this a
- 7:04thinking question or a non-thinking
- 7:06question?" It's going to send that to
- 7:07Quinn. Quinn is going to give us our
- 7:09answer, and that answer is going to be
- 7:10converted to speech. All right, so we
- 7:13activated speech to text, and I'm
- 7:15talking. As you can see, nothing's
- 7:17happening. But as soon as I say Jarvis,
- 7:20how are you?
- 7:22It listens.
- 7:23>> I'm good. How is everything going?
- 7:25>> Beautiful.
- 7:26Jarvis,
- 7:28explain AI to me.
- 7:33It does the thinking.
- 7:34>> AI, artificial intelligence, is a
- 7:36technology that allows machines to
- 7:37perform tasks that would typically
- 7:39require human intelligence, like
- 7:41learning, reasoning, or problem solving.
- 7:43>> All right, so it works and it works
- 7:45pretty well, but there's no user
- 7:47interface, there's no GUI. If it was up
- 7:50to me, I would have just reused my Ada
- 7:52GUI, but we have a problem. We're
- 7:55already using 56% of our RAM and the Ada
- 7:59GUI is very, very resource intensive.
- 8:02It's completely modular, has a whole
- 8:04bunch of animations, it has hand and
- 8:06gesture control. It's just too much for
- 8:09a local AI. So, we're going to remake
- 8:11the GUI with the focus on one being
- 8:14lightweight and two having a lot of
- 8:16features that Jarvis can directly
- 8:17interact with. Also, if you guys have
- 8:19been liking the content, make sure you
- 8:20like the video and if you want to see
- 8:22more of this type of stuff, subscribe to
- 8:24the channel. So, when designing the user
- 8:26interface, the first thing I thought
- 8:27about were all of the daily tasks that I
- 8:29struggle with that I'm going to need
- 8:31help with. And the first thing is
- 8:32obvious, I suck at planning things. So,
- 8:34I split the planning task up into
- 8:36multiple sections. The first, a regular
- 8:38to-do list. So, let's say if I need to
- 8:40do shopping, I can add that to my to-do
- 8:43list, I could complete it, I could
- 8:47uncomplete something and I could also
- 8:49delete. The next thing that I wanted to
- 8:51add was just adding things to calendar.
- 8:53So, you have your calendar
- 8:55and then let's say
- 8:57dinner,
- 8:59we set the time
- 9:01for later in the day,
- 9:04set it, we say it's personal,
- 9:06and boom, we have dinner.
- 9:09Then the last two things are just pretty
- 9:10simple, a simple timer and then also
- 9:14setting alarm so I can wake up in the
- 9:15morning. The next thing I wanted to add
- 9:17was just keeping up with news and
- 9:19current events. So, I wrote a custom
- 9:21script that runs in the background and
- 9:23it checks for news and it also pulls the
- 9:24top 10 or so headlines. And then of
- 9:26course, I made sure to add smart home
- 9:28control so we can turn on and off the
- 9:30lights and also change the colors. So,
- 9:34now our UI has all this functionality,
- 9:37but how do we get Jarvis to control it?
- 9:39And that's honestly the easy part
- 9:40because we already done it. So,
- 9:42originally we trained Function
- 9:43Juggernaut on two functions, thinking or
- 9:46non-thinking. But, what if we trained it
- 9:48on turn on the lights or add this task
- 9:51or add this event to my calendar? So, I
- 9:53put together about 10 functions for me
- 9:56to retrain Function Juggernaut on so it
- 9:58can have complete control over
- 10:00everything that the UI could do. So,
- 10:03let's put it all together and let's test
- 10:05it. Jarvis,
- 10:06add buy groceries to my to-do list.
- 10:11>> I've added buy groceries to your to-do
- 10:12[music] list.
- 10:13>> Nice. Jarvis,
- 10:15set an alarm for 8:00 a.m.
- 10:20>> Alarm set for 8:00 a.m. [music]
- 10:22>> Jarvis,
- 10:23set a timer for 1 minute.
- 10:27>> Timer set for 1 minute.
- 10:29>> Jarvis,
- 10:30anything important happening on the
- 10:32news?
- 10:38>> The top news includes Trump's potential
- 10:39[music] visits to Denmark and seven
- 10:41countries, the red purple star sapphire
- 10:44from Sri Lanka, a Ford scandal, [music]
- 10:46and ICE arrests impacting 2026 races.
- 10:49>> Jarvis, can you go ahead and turn off
- 10:52the lights in the office?
- 10:58Nice.
- 11:00>> I'll turn off the office lights.
- 11:02>> Nice.
- 11:02>> [music]
- 11:03>> Jarvis,
- 11:04can you turn on the office lights?
- 11:10>> I'll turn on the office lights.
- 11:12>> Jarvis, [music]
- 11:14change the office lights color to blue.
- 11:21>> I'll change the office lights to blue.
- 11:24>> So, those are the main features. Also,
- 11:26the one thing that I really wanted to
- 11:28add that I just could not get to work
- 11:30was the browser agent. But, if by any
- 11:32chance you are interested in the browser
- 11:34agent and you want to see it working
- 11:35completely, doing some [music] shopping
- 11:37for me, doing some research for me, you
- 11:39can check out this video of Ada because
- 11:40the browser agent is working perfectly
- 11:42there.
About this transcript
This page contains the full transcript of I Built a Local AI Assistant: 100% Free & No Subscriptions! by Naz Louis, generated from the public captions YouTube serves with the video. The transcript has 2,256 words across 334 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.
What you can do with it
Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to translate the transcript into 100+ languages.
Free YouTube transcript tool
YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, translation to 100+ languages, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.