diff --git a/homeassistant/components/sonos/const.py b/homeassistant/components/sonos/const.py
index 8fb704cbfbcb61d2d76f24158de7605d6bddd094..cda40729dbcb895e8baafb05ccde2fc6faa576a6 100644
--- a/homeassistant/components/sonos/const.py
+++ b/homeassistant/components/sonos/const.py
@@ -32,6 +32,7 @@ SONOS_TRACKS = "tracks"
 SONOS_COMPOSER = "composers"
 SONOS_RADIO = "radio"
 SONOS_OTHER_ITEM = "other items"
+SONOS_AUDIO_BOOK = "audio book"
 
 SONOS_STATE_PLAYING = "PLAYING"
 SONOS_STATE_TRANSITIONING = "TRANSITIONING"
@@ -67,6 +68,7 @@ SONOS_TO_MEDIA_CLASSES = {
     "object.item": MediaClass.TRACK,
     "object.item.audioItem.musicTrack": MediaClass.TRACK,
     "object.item.audioItem.audioBroadcast": MediaClass.GENRE,
+    "object.item.audioItem.audioBook": MediaClass.TRACK,
 }
 
 SONOS_TO_MEDIA_TYPES = {
@@ -84,6 +86,7 @@ SONOS_TO_MEDIA_TYPES = {
     "object.container.playlistContainer.sameArtist": MediaType.ARTIST,
     "object.container.playlistContainer": MediaType.PLAYLIST,
     "object.item.audioItem.musicTrack": MediaType.TRACK,
+    "object.item.audioItem.audioBook": MediaType.TRACK,
 }
 
 MEDIA_TYPES_TO_SONOS: dict[MediaType | str, str] = {
@@ -113,6 +116,7 @@ SONOS_TYPES_MAPPING = {
     "object.item": SONOS_OTHER_ITEM,
     "object.item.audioItem.musicTrack": SONOS_TRACKS,
     "object.item.audioItem.audioBroadcast": SONOS_RADIO,
+    "object.item.audioItem.audioBook": SONOS_AUDIO_BOOK,
 }
 
 LIBRARY_TITLES_MAPPING = {
diff --git a/tests/components/sonos/fixtures/sonos_favorites.json b/tests/components/sonos/fixtures/sonos_favorites.json
index 21ee68f4872aa640d5bd02f6169543666ef46732..d5463c3d02b4faef41b2a4d51c940f3ab95ef28b 100644
--- a/tests/components/sonos/fixtures/sonos_favorites.json
+++ b/tests/components/sonos/fixtures/sonos_favorites.json
@@ -34,5 +34,23 @@
         "protocol_info": "a:b:c:d"
       }
     ]
+  },
+  {
+    "title": "American Tall Tales",
+    "parent_id": "FV:2",
+    "item_id": "FV:2/66",
+    "restricted": false,
+    "resource_meta_data": "<DIDL-Lite xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:upnp=\"urn:schemas-upnp-org:metadata-1-0/upnp/\" xmlns:r=\"urn:schemas-rinconnetworks-com:metadata-1-0/\" xmlns=\"urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/\"><item id=\"101340c8reftitleC9F27_com\" parentID=\"101340c8reftitleC9F27_com\" restricted=\"true\"><dc:title>American Tall Tales</dc:title><upnp:class>object.item.audioItem.audioBook</upnp:class><desc id=\"cdudn\" nameSpace=\"urn:schemas-rinconnetworks-com:metadata-1-0/\">SA_RINCON61191_X_#Svc6-0-Token</desc></item></DIDL-Lite>",
+    "resources": [
+      {
+        "uri": "x-rincon-cpcontainer:101340c8reftitle%C9F27_com?sid=239&flags=16584&sn=5",
+        "protocol_info": "x-rincon-cpcontainer:*:*:*"
+      }
+    ],
+    "desc": null,
+    "album_art_uri": "https://m.media-amazon.com/images/I/810lqLo5m0L._SL600_.jpg",
+    "type": "instantPlay",
+    "description": "Audible",
+    "favorite_nr": "0"
   }
 ]
diff --git a/tests/components/sonos/snapshots/test_media_browser.ambr b/tests/components/sonos/snapshots/test_media_browser.ambr
index ae8e813ae5d78375038bb66b32c77e2dbb9c3cc8..9f6560c0f75d964f8762bbf8153621320ab4226f 100644
--- a/tests/components/sonos/snapshots/test_media_browser.ambr
+++ b/tests/components/sonos/snapshots/test_media_browser.ambr
@@ -1,4 +1,74 @@
 # serializer version: 1
+# name: test_browse_media_favorites[-favorites]
+  dict({
+    'can_expand': True,
+    'can_play': False,
+    'children': list([
+      dict({
+        'can_expand': True,
+        'can_play': False,
+        'children_media_class': None,
+        'media_class': 'album',
+        'media_content_id': 'object.container.album.musicAlbum',
+        'media_content_type': 'favorites_folder',
+        'thumbnail': None,
+        'title': 'Albums',
+      }),
+      dict({
+        'can_expand': True,
+        'can_play': False,
+        'children_media_class': None,
+        'media_class': 'track',
+        'media_content_id': 'object.item.audioItem.audioBook',
+        'media_content_type': 'favorites_folder',
+        'thumbnail': None,
+        'title': 'Audio Book',
+      }),
+      dict({
+        'can_expand': True,
+        'can_play': False,
+        'children_media_class': None,
+        'media_class': 'genre',
+        'media_content_id': 'object.item.audioItem.audioBroadcast',
+        'media_content_type': 'favorites_folder',
+        'thumbnail': None,
+        'title': 'Radio',
+      }),
+    ]),
+    'children_media_class': 'directory',
+    'media_class': 'directory',
+    'media_content_id': '',
+    'media_content_type': 'favorites',
+    'not_shown': 0,
+    'thumbnail': None,
+    'title': 'Favorites',
+  })
+# ---
+# name: test_browse_media_favorites[object.item.audioItem.audioBook-favorites_folder]
+  dict({
+    'can_expand': True,
+    'can_play': False,
+    'children': list([
+      dict({
+        'can_expand': False,
+        'can_play': True,
+        'children_media_class': None,
+        'media_class': 'track',
+        'media_content_id': 'FV:2/66',
+        'media_content_type': 'favorite_item_id',
+        'thumbnail': 'https://m.media-amazon.com/images/I/810lqLo5m0L._SL600_.jpg',
+        'title': 'American Tall Tales',
+      }),
+    ]),
+    'children_media_class': 'track',
+    'media_class': 'directory',
+    'media_content_id': '',
+    'media_content_type': 'favorites',
+    'not_shown': 0,
+    'thumbnail': None,
+    'title': 'Audio Book',
+  })
+# ---
 # name: test_browse_media_library
   list([
     dict({
diff --git a/tests/components/sonos/test_media_browser.py b/tests/components/sonos/test_media_browser.py
index 6e03935f7f648da1322ed2570de4f663d0296547..323140e285da94c6c2a2eabb66149216b7caf776 100644
--- a/tests/components/sonos/test_media_browser.py
+++ b/tests/components/sonos/test_media_browser.py
@@ -2,6 +2,7 @@
 
 from functools import partial
 
+import pytest
 from syrupy import SnapshotAssertion
 
 from homeassistant.components.media_player import BrowseMedia, MediaClass, MediaType
@@ -176,3 +177,39 @@ async def test_browse_media_library_albums(
     assert response["success"]
     assert response["result"]["children"] == snapshot
     assert soco_mock.music_library.browse_by_idstring.call_count == 1
+
+
+@pytest.mark.parametrize(
+    ("media_content_id", "media_content_type"),
+    [
+        (
+            "",
+            "favorites",
+        ),
+        (
+            "object.item.audioItem.audioBook",
+            "favorites_folder",
+        ),
+    ],
+)
+async def test_browse_media_favorites(
+    async_autosetup_sonos,
+    hass_ws_client: WebSocketGenerator,
+    snapshot: SnapshotAssertion,
+    media_content_id,
+    media_content_type,
+) -> None:
+    """Test the async_browse_media method."""
+    client = await hass_ws_client()
+    await client.send_json(
+        {
+            "id": 1,
+            "type": "media_player/browse_media",
+            "entity_id": "media_player.zone_a",
+            "media_content_id": media_content_id,
+            "media_content_type": media_content_type,
+        }
+    )
+    response = await client.receive_json()
+    assert response["success"]
+    assert response["result"] == snapshot