iobroker.assistant 1.4.5 → 1.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/io-package.json CHANGED
@@ -1,8 +1,21 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "assistant",
4
- "version": "1.4.5",
4
+ "version": "1.4.6",
5
5
  "news": {
6
+ "1.4.6": {
7
+ "en": "Speech recognition: own OpenAI-compatible server (Voice tab, provider OpenAI, \"Speech recognition server\"), e.g. a local whisper-large-v3-turbo in speaches, faster-whisper-server or LocalAI. It needs no OpenAI key and never gets it; an own key for the server is optional",
8
+ "de": "Spracherkennung: eigener OpenAI-kompatibler Server (Voice Tab, Anbieter OpenAI, „Speech Recognition Server“), z. B. ein lokaler Whisper-Large-V3-Turbo für Reden, Faster-Whisper-Server oder LocalAI. Es braucht keinen OpenAI-Key und kriegt ihn nie; optional",
9
+ "ru": "Распознавание речи: собственный сервер, совместимый с OpenAI (вкладка «Голос», поставщик OpenAI, «Сервер распознавания речи»), например, локальный сервер whisper-large-v3 turbo в речах, более быстрый сервер шепота или локальный искусственный интеллект. Он не нуждается в ключе OpenAI и никогда его не получает; собственный ключ для сервера необязателен",
10
+ "pt": "Servidor próprio compatível com OpenAI (Voice tab, provedor OpenAI, “Speech Recognition Server”), por exemplo, um Whisper-large-v3-turbo in speaches, faster-whisper-server ou LocalAI. Ele não precisa e nunca a obtém; uma chave para o servidor é opcional",
11
+ "nl": "Spraakherkenning: eigen server die compatibel is met OpenAI (Voice-tab, provider OpenAI, „Spraakherkenningsserver”), bijvoorbeeld een lokale Whisper-Large-v3-turbo voor toespraken, een snellere fluisterserver of LocalAI. Het heeft geen OpenAI-sleutel nodig en krijgt die nooit; een eigen sleutel voor de server is optioneel",
12
+ "fr": "Reconnaissance vocale : propre serveur compatible avec OpenAI (onglet Voice, fournisseur OpenAI, « serveur de reconnaissance vocale »), par exemple un Whisper-V3-Turbo local dans Speaches, Faster Whisper-Server ou LocalAI. Il n'a pas besoin de clé OpenAI et ne l'obtient jamais. La clé du serveur est optionnelle",
13
+ "it": "Riconoscimento vocale: proprio server compatibile con OpenAI (scheda vocale, provider OpenAI, «Speech Recognition Server»), ad esempio un local whisper-large v3-turbo in speaches, faster-whisper-server o LocalAI. Non ha bisogno di una chiave OpenAI; una chiave per il server è opzionale",
14
+ "es": "Reconocimiento de voz: servidor propio compatible con OpenAI (Voice Tab, proveedor OpenAI, «servidor de reconocimiento de voz»), por ejemplo, un turbo local de 3 voces, un servidor de susurros o IA local más rápido. No necesita clave de OpenAI y nunca la recibe; una clave propia del servidor es opcional",
15
+ "pl": "Rozpoznawanie mowy: własny serwer zgodny z OpenAI (karta Voice, dostawca OpenAI, „Serwer rozpoznawania mowy”), np. lokalny szept-large v3-turbo w speaches, faster-whisper-server lub LocalAI. Nie potrzebuje klucza OpenAI i nigdy go nie otrzymuje; własny klucz dla serwera jest opcjonalny",
16
+ "uk": "Розпізнавання мовлення: власний сервер, сумісний з OpenAI (вкладка Voice, провайдер OpenAI, «Сервер розпізнавання мови»), наприклад, локальний шепіт-великий-v3-турбо в мовах, сервер швидшого шепоту або локальний AI. Він не потребує ключа OpenAI і ніколи його не отримує; власний ключ для сервера необов'язковий",
17
+ "zh-cn": "语音识别:自己的兼容OpenAI的服务器(语音选项卡,提供商OpenAI,“语音识别服务器”),例如语音中的本地低声大v3涡轮增压,更快的耳语服务器或LocalAI。它不需要 OpenAI 密钥也永远不会得到它;服务器自己的密钥是可选的"
18
+ },
6
19
  "1.4.5": {
7
20
  "en": "ESPHome satellites: spoken replies go out in the format the device's media player announces (FLAC at its sample rate, as Home Assistant does; MP3/Opus via ffmpeg). Since ESPHome 2026.10 the player is built with only the codecs its pipelines use, and a WAV reply did not play at all. Devices that announce no formats keep getting WAV\nESPHome satellites: when the device ends the conversation itself (button, or the wake word said again), it now gets its RUN_END. It stayed in the conversation, and every further wake word only sent another stop\nESPHome satellites: an utterance that is dropped (silence, or no text recognised) ends with the error `stt-no-text-recognized` before RUN_END, like Home Assistant. A RUN_END right after the end of speech was lost while the device was still stopping its microphone, and the device waited for an answer forever\nESPHome satellites: device controls get their state names from the entity names again. ESPHome 2026 (API 1.19) no longer sends `object_id`, so every control ended up as `satellites.<id>.controls.` and the log filled with errors. Latin names give the same ids as before\nSatellites whose row was deleted from the ESPHome table are removed at the next start, and an offline satellite can be removed in the Satellites tab",
8
21
  "de": "ESPHome-Satelliten: Antworten werden im Format gesendet, das der Media Player ankündigt (FLAC mit Samplerate, wie Home Assistant; MP3/OPUS über ffmpeg). Seit ESPhome 2026.10 nutzt der Player nur die Codecs seiner Pipelines und keine WAV-Antwort. Geräte ohne Formate erhalten weiterhin WAV\nESPHome-Satelliten: Wenn das Gerät das Gespräch selbst beendet (Taste oder Weckwort), wird es nun RUN_END. Es blieb im Gespräch und jedes weitere Weckwort stoppte nur\nESPHome-Satelliten: Eine unterbrochene Äußerung (Stille oder kein Text erkannt) endet mit dem Fehler `stt-no-text-recogned` vor RUN_END, wie Home Assistant. Ein RUN_END ging gleich nach Ende der Rede verloren, während das Gerät sein Mikrofon stoppte und ewig auf eine Antwort wartete\nESPHome-Satelliten: Gerätesteuerungen beziehen ihre Namen wieder aus Entitäten. ESPhome 2026 (API 1.19) sendet keine `object_id` mehr, also landete jede Kontrolle. <id>.Controls.` und das Log voller Fehler. Lateinische Namen geben dieselben IDs\nSatelliten, deren Zeile aus der ESPHome-Tabelle gelöscht wurde, werden beim nächsten Start entfernt.",
@@ -80,19 +93,6 @@
80
93
  "pl": "Satelity ESPhome: nowa kolumna „Próg mowy” na urządzenie (pusta = 250, jak poprzednio). Urządzenie z cichym mikrofonem, na przykład telefon z aplikacją satelitarną, zareagowało na słowo „budzenie”, ale porzuciło polecenie jako ciszę, chyba że ktoś mówił głośno tuż obok niego. Kiedy wypowiedź zostaje upuszczona, chociaż zbliżyła się do progu, dziennik mówi teraz tak i sugeruje wartość\nGłos: limit długości odpowiedzi mówionych jest teraz ustawieniem („Najdłuższa odpowiedź mówiona”, karta Głos, domyślnie 400 znaków ≈ 25—30 sekund, 0 = brak limitu). Dłuższe odpowiedzi zatrzymały się po około pół minuty bez powiadomienia; ostrzeżenie dziennika nazywa teraz ustawienie. W przypadku żądania mówionego model AI (cloud LLM i pi agent) jest informowany o limitu i proszony jest o nie odczytywanie identyfikatorów stanu lub długich liczb, więc odpowiedź pasuje zamiast być cięta\nSatelity ESPhome: mikrofon zamyka się ponownie, gdy nikt nie zacznie mówić w ciągu 5 s od słowa „budzenia” (8 s po dalszym pytaniu). Fałszywe budzenie utrzymywało go otwarte przez 12,6 s wcześniej\nSatelity ESPhome: nowa opcja „Zachowaj upuszczone nagrania do diagnozy”. Nagrania usunięte jako cisza lub zwrócone puste przez rozpoznawanie mowy są przechowywane jako WAV plus JSON z poziomami detektora w sekcji Pliki → Asystent.n/Captures (najnowsze 50), aby dowiedzieć się, co wyłączyło satelitę. Domyślnie wyłączone: zawierają dźwięk z pokoju",
81
94
  "uk": "Супутники ESPHome: новий стовпець «Поріг мовлення» на пристрій (порожній = 250, як і раніше). Пристрій з тихим мікрофоном, наприклад телефон із супутниковим додатком, відреагував на слово «пробудження», але відкинув команду як тишу, якщо хтось голосно не говорив прямо біля неї. Коли висловлювання скидається, хоча воно наблизилося до порогу, журнал тепер говорить про це і пропонує значення\nГолос: ліміт довжини для розмовних відповідей тепер є параметром («Найдовша розмовна відповідь», вкладка Голос, за замовчуванням 400 символів ≈ 25—30 секунд, 0 = без обмеження). Довші відповіді припиняються приблизно через півхвилини без попередження; попередження журналу тепер називає налаштування. Для розмовного запиту моделі AI (хмарний LLM та pi-агент) повідомляють обмеження та просять не читати ідентифікатори стану або довгі числа, тому відповідь підходить, а не скорочується\nСупутники ESPHome: мікрофон знову закривається, коли ніхто не починає говорити протягом 5 с після слова пробудження (8 с після наступного запитання). До цього помилковий будильник тримав його відкритим протягом 12,6 с\nСупутники ESPHome: нова опція «Зберігати скинуті записи для діагностики». Записи, скинуті як тиша або повернуті порожніми за допомогою розпізнавання мовлення, зберігаються як WAV плюс JSON з рівнями детектора в розділі Файли → Асистент.n/Captures (найновіші 50), щоб дізнатися, що вимкнуло супутник. Вимкнено за замовчуванням: вони містять аудіо з кімнати",
82
95
  "zh-cn": "ESPhome 卫星:每台设备的新列 “语音阈值”(空值 = 250,和以前一样)。带有静音麦克风的设备,例如运行卫星应用程序的手机,会对唤醒词做出反应,但除非有人在旁边大声说话,否则会将该命令视为静音。当一个话语虽然已接近阈值但仍被删除时,日志现在会这样说并建议一个值\n语音:口头答案的长度限制现在是一项设置(“最长口语答案”,“语音” 选项卡,默认 400 个字符 ≥ 25—30 秒,0 = 无限制)。较长的答案在大约半分钟后停止,恕不另行通知;日志警告现在为设置命名。对于口头请求,AI 模型(cloud LLM 和 pi-agent)会被告知极限,并要求他们不要读出州 ID 或长数字,因此答案是合适的,而不是被剪掉的\nespHome 卫星:当在唤醒词发出后 5 秒(后续提问后 8 秒)内没有人开始说话时,麦克风会再次关闭。之前的虚假唤醒使它保持打开状态 12.6 秒\nESPhome卫星:新选项 “保留丢失的记录以供诊断”。语音识别以静音状态丢失或返回空白的录音以 WAV 和 JSON 的形式存储,探测器级别位于 “文件” → Assistant.n/Captures(最新的 50 个)下,以找出导致卫星失效的原因。默认情况下处于关闭状态:它们包含来自房间的音频"
83
- },
84
- "1.3.1": {
85
- "en": "pi-agent: the language of the satellites goes along with every request, so pi-agent asks its confirmation questions (\"… Say yes or no.\") in it instead of the system language. Before, a Russian satellite was asked \"Sag ja oder nein\", and the German \"Ja\" came back empty from the speech recognition: nothing happened. Needs a pi-agent version that knows the field\nRequests about a script (\"Skript\", \"script\", \"скрипт\", also JavaScript/Blockly) always go to the cloud model: routines, rule engine and local LLM read their details as commands of their own (\"write a script that switches the kitchen light every hour\" was answered with the time). A reply to a question of the cloud model about the script goes there too\nVoice: speech that the recognition returns as empty text is now logged (\"Voice Q (…): (empty)\") for ESPHome and native satellites too, instead of ending without a trace\nChat: opens at the newest entry, and a new request scrolls into view again. Before, the tab often opened at the oldest entries",
86
- "de": "pi-agent: Die Sprache der Satelliten folgt jeder Anfrage, also stellt Pi-Agent die Bestätigungsfragen („... Sag ja oder nein.“) darin statt in der Systemsprache. Vorher fragte ein russischer Satellit „Sag ja oder nein“ und das deutsche „Ja“ war leer aus der Spracherkennung: nichts geschah. Benötigt Pi-Agent-Version, die das Feld kennt\nAnfragen zu einem Skript („Skript“, „Script“, „auch JavaScript/Blockly“) gehen immer an das Cloud-Modell: Routinen, Rule Engine und lokales LLM lesen ihre Daten als eigene Befehle („write a script that switch the kitchen light every hour“ wurde mit der Zeit beantwortet). Eine Antwort zum Cloud-Modell zum Skript gibt es auch\nStimme: Sprache, die die Erkennung als Leertext ausgibt, wird jetzt protokolliert („Voice Q (...): (leer)“) auch für ESPhome und native Satelliten, statt spurlos zu enden\nChat: Öffnet beim neuesten Eintrag und eine neue Anfrage. Vorher öffnete der Tab oft die ältesten Einträge",
87
- "ru": "pi-agent: язык спутников соответствует каждому запросу, поэтому pi-agent задает в нем подтверждающие вопросы («... Скажи да или нет») вместо системного языка. Ранее российскому спутнику задавали вопрос «Sag ja oder nein», а немецкое «Да» при распознавании речи давало пустое слово: ничего не произошло. Нужна версия pi-agent, которая разбирается в полевых условиях\nЗапросы о скрипте («Skript», «script», «script», также JavaScript/Blockly) всегда поступают в облачную модель: программы, движок правил и локальный LLM считывают их данные в виде собственных команд («напишите сценарий, включающий кухонное освещение каждый час» отвечали вместе со временем). Ответ на вопрос об облачной модели, касающийся сценария, также приводится здесь\nГолос: речь, которую распознавание возвращает в виде пустого текста, теперь записывается в журнал («Voice Q (...): (пусто)») для EspHome и нативных спутников, а не оканчивается бесследно\nЧат: открывается при самой новой записи, а новый запрос снова появляется в поле зрения. Раньше вкладка часто открывалась для самых старых записей",
88
- "pt": "pi-agent: o idioma dos satélites acompanha cada solicitação, então o pi-agent faz perguntas de confirmação (“... Diga sim ou não”) em vez do idioma do sistema. Antes, perguntavam a um satélite russo “Sag ja oder nein” e o alemão “Ja” voltava vazio do reconhecimento de voz: nada acontecia. Precisa de um pi-agent que conheça a área\nPedidos sobre um script (“Skript”, “script”, “e também JavaScript/Blockly) sempre seguem o modelo de nuvem: rotinas, motor de regras e LLM local lêem seus detalhes como comandos próprios (“escreva um script que acenda a luz da cozinha a cada hora” foi respondido com a hora). A resposta à pergunta do modelo de nuvem sobre o script também\nVoz: a fala que o reconhecimento retorna como texto vazio agora é registrada (“Voice Q (...): (empty)”) para ESPHome e satélites nativos, em vez de terminar sem deixar rasto\nChat: abre na entrada mais recente e uma nova solicitação é exibida. Antes, a aba abria nas entradas mais antigas",
89
- "nl": "pi-Agent: de taal van de satellieten hoort bij elk verzoek, dus stelt pi-agent daarin de bevestigingsvragen („... Zeg ja of nee.”) in plaats van in de systeemtaal. Vroeger werd aan een Russische satelliet gevraagd „Sag ja oder nein”, en het Duitse „Ja” kwam met lege handen terug na de spraakherkenning: er gebeurde niets. Heeft een pi-Agent-versie nodig die het veld kent\nVerzoeken over een script („Skript”, „script”, „\" Сμμμμμμμβ\"”, ook JavaScript/Blockly) gaan altijd naar het cloudmodel: routines, regelengine en lokale LLM lezen hun gegevens als hun eigen opdrachten („\" schrijf een script dat elk uur de keukenverlichting schakelt \"” werd met de tijd beantwoord).” Een antwoord op een vraag van het cloudmodel over het script hoort daar ook bij\nSpraak: spraak die door de herkenning als lege tekst wordt teruggestuurd, wordt nu ook geregistreerd („Voice Q (...): (leeg)”) voor ESPhome en lokale satellieten, in plaats van dat de tekst spoorloos eindigt\nChat: wordt geopend bij het nieuwste item en er wordt weer een nieuw verzoek weergegeven. Vroeger werd het tabblad vaak geopend bij de oudste items",
90
- "fr": "pi-agent : la langue des satellites correspond à chaque demande, donc pi-agent pose ses questions de confirmation («... Dites oui ou non ») dans cette langue plutôt que dans la langue du système. Avant, on demandait « Sag ja oder nein » à un satellite russe, et le mot allemand « Ja » revenait vide grâce à la reconnaissance vocale : rien ne s'est passé. Il faut une version pi-agent adaptée\nLes demandes concernant un script (« Skript », « script », « скрипт », également Javascript/Blockly) sont toujours traitées dans le cloud : les routines, le moteur de règles et le LLM local les lisent comme des commandes propres (« Rédiger un script qui allume l'éclairage de la cuisine toutes les heures » a reçu l'heure). La réponse à une question sur le modèle cloud du script y figure aussi\nVoix : le discours renvoyé en texte vide est désormais enregistré (« Voice Q (...) : (vide) ») pour ESPHome et les satellites natifs, au lieu de se terminer sans laisser de trace\nChat : s'ouvre à la dernière entrée, et une nouvelle demande réapparaît. Avant, les entrées les plus anciennes s'ouvraient",
91
- "it": "pi-agent: la lingua dei satelliti soddisfa ogni richiesta, quindi pi-agent pone le domande di conferma («... Dica sì o no») anziché nella lingua di sistema. Prima si chiedeva a un satellite russo «Sag ja oder nein» e il tedesco «Ja» era vuoto dal riconoscimento vocale: niente. Serve un pi-agent che conosca il campo\nLe richieste su uno script («Skript», «script», anche Javascript/Blockly) vanno sempre al modello cloud: routine, rule engine e LLM locale leggono i dati come comandi («scrivi uno script che accenda la luce della cucina ogni ora» è stato risposto con l'ora). Anche una risposta a una domanda del modello cloud sullo script\nVoce: la voce restituita come testo vuoto è ora registrata («Voice Q (...): (empty)») anche per ESPHome e i satelliti nativi, invece di terminare senza lasciare traccia\nChat: si apre all'ultima voce e si riapre una nuova richiesta. Prima, la scheda si apriva spesso ai vecchi",
92
- "es": "pi-agent: el idioma de los satélites acompaña a cada solicitud, por lo que pi-agent hace sus preguntas de confirmación («... diga sí o no») en él y no en el idioma del sistema. Antes, a un satélite ruso se le preguntaba «Sag ja oder nein» y el alemán aparecía vacío en el reconocimiento de voz: no pasaba nada. Necesita una versión de pi-Agent que sepa\nLas solicitudes sobre un guion («Skript», «guion», también Javascript/Blockly) siempre van al modelo de nube: las rutinas, el motor de reglas y el LLM local leen sus detalles como órdenes propias («escriba un guion que cambie la luz de la cocina cada hora» se responde con la hora). La respuesta a una pregunta del modelo de nube sobre el guion va ahí\nVoz: voz que el reconocimiento devuelve como texto vacío ahora se registra («Voice Q (...): (vacía)») para ESPhome y los satélites nativos también, en lugar de terminar sin dejar rastro\nChat: se abre en la última entrada y vuelve a aparecer una nueva solicitud. Antes, la pestaña solía abrir en las entradas más antiguas",
93
- "pl": "pi-agent: język satelitów idzie w parze z każdym żądaniem, więc pi-agent zadaje pytania potwierdzające („Powiedz tak lub nie”) zamiast języka systemowego. Wcześniej rosyjski satelita został zapytany „Sag ja oder nein”, a niemiecki „Ja” wrócił pusty z rozpoznawania mowy: nic się nie stało. Potrzebuje wersji pi-agenta, która zna tę dziedzinę\nŻądania dotyczące skryptu („Skript”, „script”, „програмпт”, także JavaScript/Blockly) zawsze trafiają do modelu chmury: procedury, silnik reguł i lokalne LLM odczytują swoje dane jako własne polecenia („napisz skrypt, który przełącza światło kuchenne co godzinę” odpowiadano z czasem). Odpowiedź na pytanie o model chmury dotyczący skryptu również znajduje się tam\nGłos: mowa, którą rozpoznawanie zwraca jako pusty tekst, jest teraz rejestrowana („Voice Q (...): (empty)”) również dla ESPHome i natywnych satelitów, zamiast kończyć się bez śladu\nCzat: otwiera się przy najnowszym wpisie, a nowa prośba ponownie przewija się do widoku. Wcześniej zakładka często otwierała się przy najstarszych wpisach",
94
- "uk": "pi-agent: мова супутників йде разом з кожним запитом, тому pi-agent задає свої запитання підтвердження («... Скажи так чи ні.») замість системної мови. Раніше російський супутник запитували «Sag ja oder nein», а німецький «Ja» повернувся порожнім з розпізнавання мови: нічого не сталося. Потрібна версія pi-агента, яка знає поле\nЗапити щодо скрипту («Скрипт», «скрипт», «скрипт», також JavaScript/Blockly) завжди надходять до хмарної моделі: рутини, механізм правил та локальний LLM читають свої деталі як власні команди («писати скрипт, який перемикає світло кухні щогодини» відповідали з часом). Відповідь на питання хмарної моделі про сценарій теж йде туди\nГолос: мова, яку розпізнавання повертає як порожній текст, тепер реєструється («Voice Q (...): (порожній)») також для ESPHome та рідних супутників, замість того, щоб закінчуватися безслідно\nЧат: відкривається при найновішому записі, і новий запит знову прокручується до перегляду. Раніше вкладка часто відкривалася при найстаріших записах",
95
- "zh-cn": "pi-agent:卫星的语言与每个请求一致,因此 pi-agent 用它而不是系统语言询问其确认问题(“... 说是或否。”)。以前,一颗俄罗斯卫星被问到 “Sag ja oder nein”,而德国的 “Ja” 则在语音识别中空无一人:什么也没发生。需要一个知道该领域的 pi-agent 版本\n有关脚本(“Skript”、“脚本”、“cq”,也是 JavaScript/Blockly)的请求总是会转到云端模型:例程、规则引擎和本地 LLM 将它们的详细信息作为自己的命令来读取(“编写一个每小时切换厨房灯光的脚本” 会随着时间的推移得到答复)。关于脚本的云模型问题的答案也在那里\n语音:对于ESpHome和原生卫星,识别后以空文本形式返回的语音现在也会被记录(“Voice Q (...):(空)”),而不是无影无踪地结束\n聊天:在最新的条目处打开,新的请求再次滚动到视图中。以前,该选项卡通常在最旧的条目处打开"
96
96
  }
97
97
  },
98
98
  "titleLang": {
@@ -235,6 +235,8 @@
235
235
  "voiceApiKey": "",
236
236
  "ttsVoice": "alloy",
237
237
  "sttModel": "",
238
+ "sttBaseUrl": "",
239
+ "sttServerKey": "",
238
240
  "ttsModel": "",
239
241
  "openrouterSpeechKey": "",
240
242
  "openrouterCredentialId": "",
@@ -265,14 +267,16 @@
265
267
  "voiceApiKey",
266
268
  "azureSpeechKey",
267
269
  "awsSecretAccessKey",
268
- "openrouterSpeechKey"
270
+ "openrouterSpeechKey",
271
+ "sttServerKey"
269
272
  ],
270
273
  "protectedNative": [
271
274
  "apiKey",
272
275
  "voiceApiKey",
273
276
  "azureSpeechKey",
274
277
  "awsSecretAccessKey",
275
- "openrouterSpeechKey"
278
+ "openrouterSpeechKey",
279
+ "sttServerKey"
276
280
  ],
277
281
  "objects": [],
278
282
  "instanceObjects": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.assistant",
3
- "version": "1.4.5",
3
+ "version": "1.4.6",
4
4
  "description": "LLM assistant for ioBroker — ask about and control any state via an LLM with tool-calling",
5
5
  "author": "ioBroker",
6
6
  "license": "MIT",