NEWS
Драйвер sayit
-
Нак FADE чем то же дёргаете перед тем как сказать фразу.
Получается дёрнули FADE->pause->seyit. Или не?
Fade дергаю sayit.0.tts.playing `
-
Fade дергаю sayit.0.tts.playing `
Под линуксом sayit.0.tts.playing вроде не работает, или я не понял как пользоватся -
Fade дергаю sayit.0.tts.playing
Под линуксом sayit.0.tts.playing вроде не работает, или я не понял как пользоватся
У меня винда.Bluefox.
Драйвер сегодня стал проговаривать любую фразу по два раза. В логе ошибок нет
! sayit.0 2015-11-03 18:34:09 info sayit.0 saying: 1
! sayit.0 2015-11-03 18:34:07 info sayit.0 saying: 1
! sayit.0 2015-11-03 18:34:05 info sayit.0 saying: C:\ioBroker\node_modules\iobroker.sayit/gong.mp3
! sayit.0 2015-11-03 18:34:05 info sayit.0 saying: C:\ioBroker\node_modules\iobroker.sayit/gong.mp3 -
пока не знаю почему. Перезапусти iobroker
-
Вопрос к Bluefox.
Может добавить в драйвер возможность задать время задержки перед дин дон?
Смысл в том что сделал усилитель D класса на микрушке, так вот у него есть логический вход FADE, т.е. при подачи управляющего сигнала он плавно включает громкость (примерно 2 сек.) и так же после снятия управляющего сигнала плавно убавляет громкость до 0 (чтобы небыло шума в динамиках при простое).
И кстати sayit.0.tts.playing у меня работает не корректно, менят статус через секунды 3 на false, хотя фраза еще произносится. `
Слишком специфичный случай. Вот если бы пришёл pul reuquest, я бы подумал..Вставь в файл дин дон 2 секунды тишины в начале.
-
То же иногда встречается проговаривание по 2-а раза. Тоже не пойму почему.
-
Вопрос к Bluefox.
Может добавить в драйвер возможность задать время задержки перед дин дон?
Смысл в том что сделал усилитель D класса на микрушке, так вот у него есть логический вход FADE, т.е. при подачи управляющего сигнала он плавно включает громкость (примерно 2 сек.) и так же после снятия управляющего сигнала плавно убавляет громкость до 0 (чтобы небыло шума в динамиках при простое).
И кстати sayit.0.tts.playing у меня работает не корректно, менят статус через секунды 3 на false, хотя фраза еще произносится. `
Слишком специфичный случай. Вот если бы пришёл pul reuquest, я бы подумал..Вставь в файл дин дон 2 секунды тишины в начале. `
Ну да специфичен, но а если стоит зонный услитель? и надо перед каждым произношение переключать зоны и тд.? я думаю задержка бы не помешала.Ок как будет время зайду на гит. А тишина вначале это у меня план Б)
-
Server-PC 2015-11-26 20:32:21 error host.Server-PC instance system.adapter.sayit.0 terminated with code 6 (uncaught exception)
sayit.0 2015-11-26 20:32:21 error Error: EBUSY, open 'C:\ioBroker\node_modules\iobroker.sayit\say.mp3'
sayit.0 2015-11-26 20:32:21 error uncaught exception: EBUSY, open 'C:\ioBroker\node_modules\iobroker.sayit\say.mp3
Сегодня выскочила такая ошибочка.
Насколько я понял он говорит я еб..я открывать файл)
-
Server-PC 2015-11-26 20:32:21 error host.Server-PC instance system.adapter.sayit.0 terminated with code 6 (uncaught exception)
sayit.0 2015-11-26 20:32:21 error Error: EBUSY, open 'C:\ioBroker\node_modules\iobroker.sayit\say.mp3'
sayit.0 2015-11-26 20:32:21 error uncaught exception: EBUSY, open 'C:\ioBroker\node_modules\iobroker.sayit\say.mp3
Сегодня выскочила такая ошибочка.
Насколько я понял он говорит я еб..я открывать файл) `
Хм. Ошибка говорит, что не могу открыть, т.к кто то уже открыл.. Осталось выяснить, кто. -
Хм. Ошибка говорит, что не могу открыть, т.к кто то уже открыл.. Осталось выяснить, кто. `
А что это за файл вообще? у меня свой стоит для диндона. -
Хм. Ошибка говорит, что не могу открыть, т.к кто то уже открыл.. Осталось выяснить, кто.
А что это за файл вообще? у меня свой стоит для диндона.
Это файл с текстом. -
пока не знаю почему. Перезапусти iobroker `
Я так понимаю когда setState ('sayit.0.tts.text', ''); устанавливает значение одновременно,происходит это насколько я понял из-за того что js выполняется не линейно
например:
setTimeout(function() {setState ('sayit.0.tts.text', 'Прогноз погоды на сегодня: '+getState("javascript.0.forecast.today").val); setState ('sayit.0.tts.text', 'Сейчас за окном '+ parseFloat(getState("mqtt.0.myhome.Bedroom.Temp_in").val).toFixed(0)+'°'); }, 1000); setTimeout(function() { setState ('sayit.0.tts.text', 'Курс доллара '+ (getState("javascript.0.Valuta.USD").val.toFixed(2)).toString().replace(/[.]+/g, ',')+' руб. , '+ 'курс евро '+ (getState("javascript.0.Valuta.EUR").val.toFixed(2)).toString().replace(/[.]+/g, ',')+ ' руб.'); }, 2000);
иногда (скорее всего, когда файла нет в кеше) произносится одновременно видимо из-за потраченного времени на преобразование переменных.
-
В коде драйвера не разбирался еще.
Может организовать буфер в виде массива? Например: по setState('sayit.0.tts.text', 'Str') добавляем в массив строку, а потом уже массив обрабатываем с начало до конца, с проверкой что предыдущий элемент выполнен или сдвигая элементы массива.
-
В коде драйвера не разбирался еще.
Может организовать буфер в виде массива? Например: по setState('sayit.0.tts.text', 'Str') добавляем в массив строку, а потом уже массив обрабатываем с начало до конца, с проверкой что предыдущий элемент выполнен или сдвигая элементы массива. `
Именно так это и работает -
В коде драйвера не разбирался еще.
Может организовать буфер в виде массива? Например: по setState('sayit.0.tts.text', 'Str') добавляем в массив строку, а потом уже массив обрабатываем с начало до конца, с проверкой что предыдущий элемент выполнен или сдвигая элементы массива. `
Именно так это и работаетОк.
Почему тогда бывают такие глюки, либо одновременно проговаривает две фразы, посланные в разное время,
либо первую фразу вообще пропускает и говорит только последнюю?
Щас вот в логе :
! Server-PC 2015-12-24 22:52:07 error host.Server-PC instance system.adapter.sayit.0 terminated with code 6 (uncaught exception)
! sayit.0 2015-12-24 22:52:07 error Error: EBUSY, open 'C:\ioBroker\node_modules\iobroker.sayit\say.mp3'
! sayit.0 2015-12-24 22:52:07 error uncaught exception: EBUSY, open 'C:\ioBroker\node_modules\iobroker.sayit\say.mp3'PS
Щас проговорила одновременно две фразы
! sayit.0 2015-12-24 23:00:06 info sayit.0 saying: 23:00
! sayit.0 2015-12-24 23:00:05 info sayit.0 saying: курс евро 76,04 руб -
Может по этому у меня через Sonos, то неделю молчит, то неделю говорит. Так же замечены повторения.
-
В коде драйвера не разбирался еще.
Может организовать буфер в виде массива? Например: по setState('sayit.0.tts.text', 'Str') добавляем в массив строку, а потом уже массив обрабатываем с начало до конца, с проверкой что предыдущий элемент выполнен или сдвигая элементы массива. `
Именно так это и работаетА получается что сначала пишем mp3 в файл, а потом его воспроизводим?
А нельзя его держать и воспроизводить из RAM, а потом когда драйвер не используется( все сказали) уже не спеша пишем в файлы.
-
А получается что сначала пишем mp3 в файл, а потом его воспроизводим?
А нельзя его держать и воспроизводить из RAM, а потом когда драйвер не используется( все сказали) уже не спеша пишем в файлы. `
Если ты знаешь, как из RAM воспроизвести звук под Linux (да хотя бы под Windows), расскажи как.И это для всех звуковых карт и выходов…
Проблема в том, что я не могу оценить длинну фразы. И если размер файла маленький, а фраза длинная (например тишина), то получаются накладки. Пока не знаю, как решить это. Есть библиотеки в Cи, но тогда для Windows будет требоватся VS2015..
-
А получается что сначала пишем mp3 в файл, а потом его воспроизводим?
А нельзя его держать и воспроизводить из RAM, а потом когда драйвер не используется( все сказали) уже не спеша пишем в файлы. `
Если ты знаешь, как из RAM воспроизвести звук под Linux (да хотя бы под Windows), расскажи как.И это для всех звуковых карт и выходов…
Проблема в том, что я не могу оценить длинну фразы. И если размер файла маленький, а фраза длинная (например тишина), то получаются накладки. Пока не знаю, как решить это. Есть библиотеки в Cи, но тогда для Windows будет требоватся VS2015.. `
А для чего оценивать длину фразы? можно ведь получить длительность mp3 файла.
читаем из буфера фраз строку, отправляем ее на "озвучку", получаем файл, узнаем его продолжительность и отправляем на воспроизведение, ставим какойнить флаг. Проверяем буфер, нет ли там еще чего, если есть отправляем на озвучку, получаем файл, узнаем время, проверяем предыдущий флаг (времени) если больше продолжительности первого файла то отправляем текущий на воспроизведение.
или я что то непонимаю
-
После обновления вообще молчит.
Server-PC 2015-12-26 16:00:11 error host.Server-PC startInstance sayit.0: cannot find start file!
Добавлено:
В папке с драйвером осталась только папка \iobroker\node_modules\iobroker.sayit\cmdmp3\
Больше ни файлов ни папок нет.
Пытаюсь обновить руками,
Долго висит на строке
! c:\iobroker>npm install iobroker.sayit
! /
! > iobroker.sayit@0.3.16 install c:\iobroker\node_modules\iobroker.sayit
! > node main.js –install
! 2015-12-26 16:07:14.235 - info: sayit.0 starting. Version 0.3.16 in c:/iobroker
! /node_modules/iobroker.sayit
! 2015-12-26 16:07:14.245 - info: sayit.0 Upload announce mp3 filesВисит а оказалось что уже работает.)