so… i have a little problem, or rather, i can’t set a “voice”.
I use an ESP32 with voice assistant that transmits the answers to an external media player.
Conversation agent: Chat GPT
Voice recognition: Home Assistant CLoud.
Speech synthesis: Home Assistant Cloud.
The problem is that if I change the type of voice, from a female to a male, the answers always come from a male voice. (normally I just change the Speech synthesis voice from male to famale)
(Instead on my Echo Atom M5 stack I have no problem and the voice changes)
Where am I going wrong?
This is part of my configuration regarding the configuration:
binary_sensor:
- platform: status
name: API Connection
id: api_connection
filters:
- delayed_on: 1s
on_press:
- if:
condition:
switch.is_on: use_wake_word
then:
- voice_assistant.start_continuous:
on_release:
- if:
condition:
switch.is_on: use_wake_word
then:
- voice_assistant.stop:
switch:
- platform: template
name: Use wake word
id: use_wake_word
optimistic: true
restore_mode: RESTORE_DEFAULT_ON
entity_category: config
on_turn_on:
- lambda: id(va).set_use_wake_word(true);
- if:
condition:
not:
- voice_assistant.is_running
then:
- voice_assistant.start_continuous
on_turn_off:
- voice_assistant.stop
- lambda: id(va).set_use_wake_word(false);
microphone:
- platform: i2s_audio
adc_type: external
pdm: false
id: mic_i2s
channel: right
bits_per_sample: 32bit
i2s_audio_id: i2s_in
i2s_din_pin: GPIO32
speaker:
- platform: i2s_audio
id: my_speaker
dac_type: external
i2s_dout_pin: GPIO33 #DIN
i2s_mode: primary
i2s_audio_id: i2s_in
voice_assistant:
microphone: mic_i2s
id: va
noise_suppression_level: 2
auto_gain: 31dBFS
volume_multiplier: 5.0
use_wake_word: false
speaker: my_speaker
on_tts_start:
- homeassistant.service:
service: tts.cloud.say
data:
entity_id: media_player.arylica30_amp
data_template:
message: "{{ my_stt }}"
variables:
my_stt: return x;
on_error:
- if:
condition:
switch.is_on: use_wake_word
then:
- switch.turn_off: use_wake_word
- switch.turn_on: use_wake_word
on_client_connected:
- if:
condition:
switch.is_on: use_wake_word
then:
- voice_assistant.start_continuous:
on_client_disconnected:
- if:
condition:
switch.is_on: use_wake_word
then:
- voice_assistant.stop:
Thanks