diff --git a/src/data/cloud/tts.ts b/src/data/cloud/tts.ts
index 103c389075..bf701c08ec 100644
--- a/src/data/cloud/tts.ts
+++ b/src/data/cloud/tts.ts
@@ -1,8 +1,14 @@
-import { caseInsensitiveStringCompare } from "../../common/string/compare";
import type { HomeAssistant } from "../../types";
export interface CloudTTSInfo {
- languages: [string, string][];
+ languages: [
+ // language
+ string,
+ // voice id
+ string,
+ // voice name
+ string,
+ ][];
}
export const getCloudTTSInfo = (hass: HomeAssistant) =>
@@ -25,22 +31,3 @@ export const getCloudTtsLanguages = (info?: CloudTTSInfo) => {
}
return languages;
};
-
-export const getCloudTtsSupportedVoices = (
- language: string,
- info: CloudTTSInfo | undefined
-) => {
- const voices: string[] = [];
-
- if (!info) {
- return voices;
- }
-
- for (const [curLang, voice] of info.languages) {
- if (curLang === language) {
- voices.push(voice);
- }
- }
-
- return voices.sort((a, b) => caseInsensitiveStringCompare(a, b));
-};
diff --git a/src/panels/config/cloud/account/cloud-tts-pref.ts b/src/panels/config/cloud/account/cloud-tts-pref.ts
index 87355c39e4..8adc58e737 100644
--- a/src/panels/config/cloud/account/cloud-tts-pref.ts
+++ b/src/panels/config/cloud/account/cloud-tts-pref.ts
@@ -16,12 +16,30 @@ import type { CloudTTSInfo } from "../../../../data/cloud/tts";
import {
getCloudTTSInfo,
getCloudTtsLanguages,
- getCloudTtsSupportedVoices,
} from "../../../../data/cloud/tts";
import { showAlertDialog } from "../../../../dialogs/generic/show-dialog-box";
import type { HomeAssistant } from "../../../../types";
import { showTryTtsDialog } from "./show-dialog-cloud-tts-try";
+export const getCloudTtsSupportedVoices = (
+ language: string,
+ info: CloudTTSInfo | undefined
+) => {
+ const voices: { voiceId: string; voiceName: string }[] = [];
+
+ if (!info) {
+ return voices;
+ }
+
+ for (const [curLang, voiceId, voiceName] of info.languages) {
+ if (curLang === language) {
+ voices.push({ voiceId, voiceName });
+ }
+ }
+
+ return voices;
+};
+
@customElement("cloud-tts-pref")
export class CloudTTSPref extends LitElement {
@property({ attribute: false }) public hass!: HomeAssistant;
@@ -77,7 +95,9 @@ export class CloudTTSPref extends LitElement {
>
${voices.map(
(voice) =>
- html`${voice}`
+ html`
+ ${voice.voiceName}
+ `
)}
@@ -132,9 +152,9 @@ export class CloudTTSPref extends LitElement {
const curVoice = this.cloudStatus!.prefs.tts_default_voice[1];
const voices = this.getSupportedVoices(language, this.ttsInfo);
- const newVoice = voices.find((item) => item === curVoice)
+ const newVoice = voices.find((item) => item.voiceId === curVoice)
? curVoice
- : voices[0];
+ : voices[0].voiceId;
try {
await updateCloudPref(this.hass, {