Skip to content

Commit 35cf95a

Browse files
authored
Update audio related components for ESPHome 2026.3.0 (#562)
* update audio related components for ESPHome 2026.3.0 * use 2026.3.1 * use newer sha hash to reduce timeout warnings
1 parent 06445c1 commit 35cf95a

2 files changed

Lines changed: 83 additions & 78 deletions

File tree

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
files: |
2222
home-assistant-voice.factory.yaml
2323
home-assistant-voice.8mb.yaml
24-
esphome-version: 2026.2.0
24+
esphome-version: 2026.3.1
2525
release-summary: ${{ github.event_name == 'release' && github.event.release.body || '' }}
2626
release-url: ${{ github.event_name == 'release' && github.event.release.html_url || '' }}
2727
release-version: ${{ github.event_name == 'release' && github.event.release.tag_name || '' }}

home-assistant-voice.yaml

Lines changed: 82 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ esphome:
3838
name: home-assistant-voice
3939
friendly_name: Home Assistant Voice
4040
name_add_mac_suffix: true
41-
min_version: 2026.2.0
41+
min_version: 2026.3.0
4242
on_boot:
4343
priority: 375
4444
then:
@@ -86,6 +86,14 @@ wifi:
8686
on_connect:
8787
- lambda: id(improv_ble_in_progress) = false;
8888
- script.execute: control_leds
89+
# Enable/disable Sendspin static adjustment delay if the jack is plugged in or not
90+
- if:
91+
condition:
92+
- binary_sensor.is_on: jack_plugged
93+
then:
94+
- sendspin.media_source.enable_static_delay_adjustment:
95+
else:
96+
- sendspin.media_source.disable_static_delay_adjustment:
8997
on_disconnect:
9098
- script.execute: control_leds
9199

@@ -523,9 +531,11 @@ binary_sensor:
523531
number: GPIO17
524532
# When the jack is plugged in:
525533
# - LED animation
534+
# - Enable Sendspin static delay adjustment to apply the persisted delay when using the external audio output
526535
# - Sound played
527536
on_press:
528537
- lambda: id(jack_plugged_recently) = true;
538+
- sendspin.media_source.enable_static_delay_adjustment:
529539
- script.execute: control_leds
530540
- delay: 200ms
531541
- script.execute:
@@ -537,10 +547,12 @@ binary_sensor:
537547
- script.execute: control_leds
538548
# When the jack is unplugged:
539549
# - LED animation
550+
# - Disable Sendspin static delay adjustment when using the internal speaker
540551
# - Sound played
541552
on_release:
542553
- lambda: id(jack_unplugged_recently) = true;
543554
- script.execute: control_leds
555+
- sendspin.media_source.disable_static_delay_adjustment:
544556
- delay: 200ms
545557
- script.execute:
546558
id: play_sound
@@ -1391,12 +1403,14 @@ script:
13911403
# Script executed when the timer is ringing, to repeat the timer finished sound.
13921404
- id: enable_repeat_one
13931405
then:
1406+
# Turn on the repeat mode and pause for 500 ms between playlist items/repeats
13941407
- media_player.repeat_one:
13951408
id: external_media_player
13961409
announcement: true
1397-
# Turn on the repeat mode and pause for 500 ms between playlist items/repeats
1398-
- lambda: |-
1399-
id(external_media_player)->set_playlist_delay_ms(1, 500);
1410+
- speaker_source.set_playlist_delay:
1411+
id: external_media_player
1412+
pipeline: announcement
1413+
delay: 500ms
14001414

14011415
# Script execute when the timer is done ringing, to disable repeat mode.
14021416
- id: disable_repeat
@@ -1405,8 +1419,10 @@ script:
14051419
- media_player.repeat_off:
14061420
id: external_media_player
14071421
announcement: true
1408-
- lambda: |-
1409-
id(external_media_player)->set_playlist_delay_ms(1, 0);
1422+
- speaker_source.set_playlist_delay:
1423+
id: external_media_player
1424+
pipeline: announcement
1425+
delay: 0ms
14101426

14111427
# Script executed when we want to play sounds on the device.
14121428
- id: play_sound
@@ -1425,7 +1441,7 @@ script:
14251441
if ( (id(external_media_player).state != media_player::MediaPlayerState::MEDIA_PLAYER_STATE_ANNOUNCING ) || priority) {
14261442
id(external_media_player)
14271443
->make_call()
1428-
.set_media_url("file://" + sound_file)
1444+
.set_media_url("audio-file://" + sound_file)
14291445
.set_announcement(true)
14301446
.perform();
14311447
}
@@ -1552,76 +1568,83 @@ speaker:
15521568

15531569
sendspin:
15541570
id: sendspin_hub
1555-
task_stack_in_psram: true
1556-
kalman_process_error: 0.01
1571+
task_stack_in_psram: false
15571572

15581573
http_request:
1574+
buffer_size_rx: 2048 # Reduces CPU load when streaming audio
1575+
1576+
audio_file:
1577+
- id: center_button_press_sound
1578+
file: ${center_button_press_sound_file}
1579+
- id: center_button_double_press_sound
1580+
file: ${center_button_double_press_sound_file}
1581+
- id: center_button_triple_press_sound
1582+
file: ${center_button_triple_press_sound_file}
1583+
- id: center_button_long_press_sound
1584+
file: ${center_button_long_press_sound_file}
1585+
- id: factory_reset_initiated_sound
1586+
file: ${factory_reset_initiated_sound_file}
1587+
- id: factory_reset_cancelled_sound
1588+
file: ${factory_reset_cancelled_sound_file}
1589+
- id: factory_reset_confirmed_sound
1590+
file: ${factory_reset_confirmed_sound_file}
1591+
- id: jack_connected_sound
1592+
file: ${jack_connected_sound_file}
1593+
- id: jack_disconnected_sound
1594+
file: ${jack_disconnected_sound_file}
1595+
- id: mute_switch_on_sound
1596+
file: ${mute_switch_on_sound_file}
1597+
- id: mute_switch_off_sound
1598+
file: ${mute_switch_off_sound_file}
1599+
- id: timer_finished_sound
1600+
file: ${timer_finished_sound_file}
1601+
- id: wake_word_triggered_sound
1602+
file: ${wake_word_triggered_sound_file}
1603+
- id: easter_egg_tick_sound
1604+
file: ${easter_egg_tick_sound_file}
1605+
- id: easter_egg_tada_sound
1606+
file: ${easter_egg_tada_sound_file}
1607+
- id: error_cloud_expired
1608+
file: ${error_cloud_expired_sound_file}
15591609

15601610
media_source:
1561-
- platform: sendspin
1562-
id: sendspin_source
1611+
- platform: audio_file
1612+
id: audio_file_announcement_source
1613+
- platform: http_request
1614+
id: http_announcement_source
1615+
buffer_size: 250000
15631616
- platform: http_request
1564-
id: http_source
1617+
id: http_media_source
15651618
buffer_size: 500000
1566-
- platform: file
1567-
id: file_source
1568-
files:
1569-
- id: center_button_press_sound
1570-
file: ${center_button_press_sound_file}
1571-
- id: center_button_double_press_sound
1572-
file: ${center_button_double_press_sound_file}
1573-
- id: center_button_triple_press_sound
1574-
file: ${center_button_triple_press_sound_file}
1575-
- id: center_button_long_press_sound
1576-
file: ${center_button_long_press_sound_file}
1577-
- id: factory_reset_initiated_sound
1578-
file: ${factory_reset_initiated_sound_file}
1579-
- id: factory_reset_cancelled_sound
1580-
file: ${factory_reset_cancelled_sound_file}
1581-
- id: factory_reset_confirmed_sound
1582-
file: ${factory_reset_confirmed_sound_file}
1583-
- id: jack_connected_sound
1584-
file: ${jack_connected_sound_file}
1585-
- id: jack_disconnected_sound
1586-
file: ${jack_disconnected_sound_file}
1587-
- id: mute_switch_on_sound
1588-
file: ${mute_switch_on_sound_file}
1589-
- id: mute_switch_off_sound
1590-
file: ${mute_switch_off_sound_file}
1591-
- id: timer_finished_sound
1592-
file: ${timer_finished_sound_file}
1593-
- id: wake_word_triggered_sound
1594-
file: ${wake_word_triggered_sound_file}
1595-
- id: easter_egg_tick_sound
1596-
file: ${easter_egg_tick_sound_file}
1597-
- id: easter_egg_tada_sound
1598-
file: ${easter_egg_tada_sound_file}
1599-
- id: error_cloud_expired
1600-
file: ${error_cloud_expired_sound_file}
1619+
- platform: sendspin
1620+
id: sendspin_media_source
1621+
fixed_delay: 480 microseconds # The AIC3204 DAC used, as configured, on the VPE delays audio by 480 microseconds
16011622

16021623
media_player:
16031624
- platform: sendspin
16041625
id: sendspin_group_media_player
16051626
- platform: speaker_source
16061627
id: external_media_player
16071628
name: Media Player
1608-
announcement_speaker: announcement_resampling_speaker
1609-
media_speaker: media_resampling_speaker
16101629
announcement_pipeline:
16111630
format: FLAC # FLAC is the least processor intensive codec
16121631
num_channels: 1 # Stereo audio is unnecessary for announcements
16131632
sample_rate: 48000
1633+
speaker: announcement_resampling_speaker
1634+
sources:
1635+
- audio_file_announcement_source
1636+
- http_announcement_source
16141637
media_pipeline:
16151638
format: FLAC # FLAC is the least processor intensive codec
16161639
num_channels: 2
16171640
sample_rate: 48000
1641+
speaker: media_resampling_speaker
1642+
sources:
1643+
- http_media_source
1644+
- sendspin_media_source
16181645
volume_increment: 0.05
16191646
volume_min: 0.4
16201647
volume_max: 0.85
1621-
sources:
1622-
- file_source
1623-
- http_source
1624-
- sendspin_source
16251648
on_mute:
16261649
- script.execute: control_leds
16271650
on_unmute:
@@ -1667,36 +1690,18 @@ external_components:
16671690
- voice_kit
16681691
refresh: 0s
16691692
- source:
1670-
# https://github.com/esphome/esphome/pull/12256
1671-
type: git
1672-
url: https://github.com/esphome/esphome
1673-
ref: a2d98e1d5e020200db8f3caf27a74a939a661dc4
1674-
components: [audio]
1675-
- source:
1676-
# https://github.com/esphome/esphome/pull/12258
1693+
# https://github.com/esphome/esphome/pull/14933
16771694
type: git
1678-
url: https://github.com/esphome/esphome
1679-
ref: b4b7c5b25ebe0f2ab988f700219fa3c57b2377b7
1680-
components: [media_player]
1681-
- source:
1682-
# https://github.com/esphome/esphome/pull/12284
1683-
type: git
1684-
url: https://github.com/esphome/esphome
1685-
ref: d48058e140c98f5c2d902661d851a6b712d62434
1686-
components: [sendspin]
1687-
- source:
1688-
# https://github.com/esphome/esphome/pull/14013
1689-
type: git
1690-
url: https://github.com/esphome/esphome
1691-
ref: 51dcce3d1f22865ebb458a5447bbc877ac946b5a
1692-
components: [mdns]
1695+
url: https://github.com/kahrendt/esphome
1696+
ref: 7a6cf5c8472b7e2fa18ee0fc314f66a80d249e32
1697+
components: [const, media_source, sendspin]
16931698
- source:
16941699
# https://github.com/esphome/esphome/pull/12429
16951700
type: git
16961701
url: https://github.com/esphome/esphome
1697-
ref: b49b09b6ae56502aa3ce51be86f90d732d019b2c
1702+
ref: ff8ce89556748509d7ee8724e12d9d43d3c8c1e8
16981703
refresh: 0s
1699-
components: [file, http_request, media_source, speaker_source]
1704+
components: [http_request]
17001705

17011706
audio_dac:
17021707
- platform: aic3204

0 commit comments

Comments
 (0)