# Anatomy of a voice assistant

**URL:** https://community.openconversational.ai/t/anatomy-of-a-voice-assistant/16640
**Category:** Getting Started / Introduction
**Created:** [November 17, 2024, 8:47pm UTC](https://community.openconversational.ai/t/anatomy-of-a-voice-assistant/16640 "2024-11-17T20:47:54Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![mikejgray](https://community.openconversational.ai/user_avatar/community.openconversational.ai/mikejgray/32/3966_2.png) [@mikejgray](https://community.openconversational.ai/u/mikejgray)
#### Post date: [November 17, 2024, 8:47pm UTC](https://community.openconversational.ai/t/anatomy-of-a-voice-assistant/16640/1 "2024-11-17T20:47:54Z")

</div>

I recently wrote a blog series on how OVOS/Neon works - which service handles what part of the assistant pipeline? How do they interact? What are some configurations you can use for different scenarios, including minimal development setups? The series is aimed at less technical users but can also be a good overview for developers trying to remember which code to edit for their use case.

Please share with anyone who may have interest and feel free to send feedback! I do update blog posts from time to time as corrections/new information becomes available. Enjoy!

> **[The Voice Assistant's Nervous System: Understanding the OVOS Message Bus](https://blog.graywind.org/posts/private-voice-assistant/voice-assistant-nervous-system/)**
>
> OpenVoiceOS (OVOS) and Neon AI offer powerful options for creating private, local voice assistants. While most users can get started with ovos-installer or a Neon image, understanding how these assistants work internally helps you customize them...

> **[The Voice Assistant's Ears: Understanding OVOS Listener Services](https://blog.graywind.org/posts/private-voice-assistant/voice-assistant-ears/)**
>
> Continuing our exploration of OVOS and Neon.AI components, let’s examine how your assistant hears and understands spoken commands. The listener service (ovos-dinkum-listener) is like your assistant’s ears and early speech processing - it handles...

> **[The Voice Assistant's Mouth: Understanding OVOS Audio Services](https://blog.graywind.org/posts/private-voice-assistant/voice-assistant-mouth/)**
>
> After exploring how your assistant listens in our previous article, let’s look at how it speaks and plays audio. The audio service (ovos-audio) handles all sound output, from spoken responses to music playback.
> Audio Service Overview Just as the...

> **[The Voice Assistant's Body: Understanding OVOS Hardware Integration](https://blog.graywind.org/posts/private-voice-assistant/voice-assistant-body/)**
>
> While previous articles covered how your assistant listens, thinks, and speaks, now we’ll explore how it interacts with physical hardware through the Platform Hardware Abstraction Layer (PHAL) system.
> Evolution of Hardware Support The PHAL system’s...

> **[The Voice Assistant's Brain: Understanding OVOS Skills](https://blog.graywind.org/posts/private-voice-assistant/voice-assistant-brain/)**
>
> After exploring how your assistant communicates, speaks, listens, and controls hardware, let’s examine how it processes and responds to commands through the core/skills service.
> Core Service Overview The core service (called either “core” or “skills”...

> **[Building Voice Assistant Configurations: Advanced OVOS Setups](https://blog.graywind.org/posts/private-voice-assistant/voice-assistant-configurations/)**
>
> After exploring each component of OVOS and Neon assistants, let’s examine how to mix and match these components to create custom configurations. The modular nature of OVOS allows for setups ranging from minimal text-only systems to complex...

---

<div class="post-metadata">

### Author: ![goldyfruit](https://community.openconversational.ai/user_avatar/community.openconversational.ai/goldyfruit/32/2741_2.png) [@goldyfruit](https://community.openconversational.ai/u/goldyfruit)
#### Post date: [November 17, 2024, 9:04pm UTC](https://community.openconversational.ai/t/anatomy-of-a-voice-assistant/16640/2 "2024-11-17T21:04:54Z")

</div>

You forgot to mention your Rust implementation of the message bus which I’m using everywhere. 😇

---

<div class="post-metadata">

### Author: ![mikejgray](https://community.openconversational.ai/user_avatar/community.openconversational.ai/mikejgray/32/3966_2.png) [@mikejgray](https://community.openconversational.ai/u/mikejgray)
#### Post date: [November 17, 2024, 9:10pm UTC](https://community.openconversational.ai/t/anatomy-of-a-voice-assistant/16640/3 "2024-11-17T21:10:26Z")

</div>

![image](https://community.openconversational.ai/uploads/default/original/2X/5/5353a3908ff98883a7115050bbc83cb7a788a781.png)  
Should I make it more prominent? I only mentioned it in passing

---

<div class="post-metadata">

### Author: ![goldyfruit](https://community.openconversational.ai/user_avatar/community.openconversational.ai/goldyfruit/32/2741_2.png) [@goldyfruit](https://community.openconversational.ai/u/goldyfruit)
#### Post date: [November 17, 2024, 9:27pm UTC](https://community.openconversational.ai/t/anatomy-of-a-voice-assistant/16640/4 "2024-11-17T21:27:51Z")

</div>

I would not bother with C++ IMO, its buggy and not really maintained.

---

<div class="post-metadata">

### Author: ![JarbasAl](https://community.openconversational.ai/user_avatar/community.openconversational.ai/jarbasal/32/1319_2.png) [@JarbasAl](https://community.openconversational.ai/u/JarbasAl)
#### Post date: [November 18, 2024, 8:57am UTC](https://community.openconversational.ai/t/anatomy-of-a-voice-assistant/16640/5 "2024-11-18T08:57:54Z")

</div>

it was a proof of concept, and now that we have the rust bus i agree!

---

<div class="post-metadata">

### Author: ![mike99mac](https://community.openconversational.ai/user_avatar/community.openconversational.ai/mike99mac/32/2016_2.png) [@mike99mac](https://community.openconversational.ai/u/mike99mac)
#### Post date: [November 18, 2024, 12:20pm UTC](https://community.openconversational.ai/t/anatomy-of-a-voice-assistant/16640/6 "2024-11-18T12:20:48Z")

</div>

Mike, good stuff. I looked at the first one, will try to peruse the others today. Just one piece of feedback: when you mention HiveMind, you assume the reader knows what it is. Maybe describe it and/or make it a hot link. -Mike Mac

---

<div class="post-metadata">

### Author: ![mikejgray](https://community.openconversational.ai/user_avatar/community.openconversational.ai/mikejgray/32/3966_2.png) [@mikejgray](https://community.openconversational.ai/u/mikejgray)
#### Post date: [November 18, 2024, 1:01pm UTC](https://community.openconversational.ai/t/anatomy-of-a-voice-assistant/16640/7 "2024-11-18T13:01:00Z")

</div>

Thanks Mike! The header is a link to the HiveMind documentation. Should I make the link more prominent?

---

<div class="post-metadata">

### Author: ![mike99mac](https://community.openconversational.ai/user_avatar/community.openconversational.ai/mike99mac/32/2016_2.png) [@mike99mac](https://community.openconversational.ai/u/mike99mac)
#### Post date: [November 18, 2024, 1:33pm UTC](https://community.openconversational.ai/t/anatomy-of-a-voice-assistant/16640/8 "2024-11-18T13:33:05Z")

</div>

D’oh - my bad. I went through the other blog entries - great stuff!
