Using Voice PE as a microphone and Google Nest Mini for audio output

Hello, I’ve been trying to solve a problem for several weeks—actually, even months.

Since my parents are old and speaking Turkish, I wanted to set up a Turkish Home Assistant in our house. I first tried using a Raspberry Pi, but its performance wasn’t enough. After reading online that many people switch to a mini PC, I did the same.

At first, I even thought the Google Nest Mini could speak Turkish, so I started with that because “ChatGPT” said it works well in Turkish—but it didn’t :D. That’s how I ended up with Home Assistant.

Currently, I can trigger many actions with remotes or buttons, but now I wanted to make it easier for my parents to use voice assistants.

My goal is to use a microphone for input and always output the audio on the Google Nest Mini.

For this project, ChatGPT and Gemini recommended the following:

  1. Connect a microphone to the mini PC and try it that way – didn’t work because the microphone wasn’t recognized.
  2. Use an ATOM Echo – didn’t work because I couldn’t separate audio output.
  3. Use an ESP32 with an IMP441 microphone – didn’t work because it didn’t recognize the microphones.

Every time, after many error messages, ChatGPT or Gemini told me that it wouldn’t work with that component and suggested I buy something else.

I’m almost at the end of my patience, and on ChatGPT’s advice I bought Home Assistant Voice Preview (Voice PE), which arrived today and has been set up.

But the same problem occurs: the audio output cannot be separated. I want to use the Voice PE only as a microphone and the Google Nest Mini for audio output.

I’ve seen some forum posts like these:

Since my English is not very good, I’ve been translating a lot, but I still can’t get it to work. I keep getting errors like:

[i2s_speaker] is an invalid option for [voice_kit]. Please check the indentation. i2s_speaker: False

or

Couldn't find ID 'internal_speaker'. Please check you have defined an ID with that name in your configuration. These IDs look similar: "internal_speaker_amp", "mixing_speaker", "internal_i2c".

Does anyone know how I can set it up so that this device is used only as a microphone, and the Nest Mini handles audio output?

ChatGPT keeps telling me to go to Settings > Voice Assistant and set where the pipeline should play audio, but I don’t have that option. I can only select the language and the services I use, like Google AI Conversation, STT Google Cloud, TTS Google Cloud, etc.

Thank you for any help!

What voice device are you currently using?

Setup esp device to work as normal voice device.

You will need to create action in esphome under voice_assistant section >> on_announce

The automation will send the received response url to homeassistant that generates announcement on target device.

I believe you can redirect replies from the Voice PE by changing it’s configuration. There’s docs about it here:

Edit: To be clear, this means changing the internal settings of the Voice PE itself, which is an ESPHome device. Apart from that, as far as I know, there’s no simple way of redirecting built-in responses in Home Assistant - voice is a bit of a black box. The only realistic option is to use custom sentences, which is far from ideal.

1 Like

right now, I am using home assistant voice preview, but cant change the target for media player

voice_assistant:
  # ……
  
  on_tts_end:
    - homeassistant.service:
        service: media_player.play_media
        data:
          entity_id: media_player.your_home_speaker  # Change to your target speaker
          media_content_id: !lambda 'return x;'

I’m thinking something like this.
You can call HA service using api. Basically call the Media player service or similar and pass it the response url for the media for playback

If you install the ESPHome Device Builder app you should be able to access the configuration files of the Voice PE directly and edit them.

I don’t have Voice PE myself, but I’ve done this with other ESPHome devices.

GitHub - xiasi0/assist_tts_router · GitHub It’s currently just a beta version, hope it’s what you need.