|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
|||||||
Как вывести запись аудиопотока TTS в память?10.02.2020, 12:12. Показов 4249. Ответов 27
Метки нет (Все метки)
На сайте Майкрософт имеется вот такой пример:
https://docs.microsoft.com/en-... 3dvs.85%29
Просто тупо заменить везде SpFileStream на SpMemoryStream, так что ли? ![]() На самом деле, я сейчас попробовал, VB меня обругал нехорошими словами ![]()
0
|
|||||||
| 10.02.2020, 12:12 | |
|
Ответы с готовыми решениями:
27
Запись аудиопотока Запись аудиопотока с системы Как заставить Google TTS правильно ставить ударения? |
|
63 / 48 / 12
Регистрация: 28.12.2014
Сообщений: 270
|
||||||
| 10.02.2020, 13:30 | ||||||
|
Судя по всему не подключена ActiveX библиотека SpeechLib.
Записать данные в память из файла, например. Или, метод Read запишет данные в переменную из filestream.
0
|
||||||
|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
|||||||||
| 10.02.2020, 15:42 [ТС] | |||||||||
|
Спасибо, что откликнулись, но я ничего не понял
![]() Вот если отбросить все эти выкрутасы с массивами, с чтением в обратном порядке и прочей шелухой. Вот просто текст "Привет", который произносит движок TTS, надо не вывести на динамики, не записать в файл, а записать в память в переменную Text$. Что для этого надо сделать по минимуму? P.S. А записать в файл и потом из него считать в память, ну нет это не годится, это двройная работа получается. Как сказал классик, эдак и я тренькать могу ![]() Добавлено через 23 минуты Вот здесь был задан тот же самый вопрос (я нагуглил) и там ответили, но к сожалению на языке C, и поэтому не понятно ![]() https://stackoverflow.com/ques... ve#tab-top
0
|
|||||||||
|
Модератор
|
||||||
| 11.02.2020, 09:33 | ||||||
2
|
||||||
|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
||||||
| 11.02.2020, 20:07 [ТС] | ||||||
|
The trick, большое спасибо, очень похоже на верное решение проблемы. Но есть одно "но".
Для проверки результата попробовал скинуть весь полученный массив байтов на диск в виде .WAV файла. Скинулось, но воспроизводиться отказывается. Следовательно, вопрос: в каком формате аудиопоток хранится в памяти?
0
|
||||||
|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
||
| 11.02.2020, 22:12 [ТС] | ||
|
И если неправильно скинул, то вопрос: а как следует скинуть правильно? Последовательность байтов у нас записалась в массив. Весь массив скидываем на диск и пытаемся вопроизвести всю эту"музыку" ![]() Программа же перед вами, скопируйте, и сами попробуйте запустить. И у вас тоже самое получится, наверняка. Наверно, WAV файл это не простая последовательность байтов, а упакованная как-нибудь. Надо будет мне про эти файлы почитать... Добавлено через 8 минут Сейчас начал читать про WAV файлы. Понял, о каком заголовке вы толкуете.
0
|
||
|
Модератор
|
|||||||
| 11.02.2020, 22:22 | |||||||
Сообщение было отмечено Power_Basic как решение
Решение
3
|
|||||||
|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
|
| 12.02.2020, 12:13 [ТС] | |
|
The trick, спасибо, работает идеально!
0
|
|
|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
||||||
| 19.02.2020, 13:55 [ТС] | ||||||
|
The trick, вот не поверите, я с тех самых пор (то есть уже целую неделю) бьюсь над проблемой перевода вашего кода с языка Visual Basic на язык Power Basic. Получается какая-то хрень
![]() В COM-программировании я не особо силён, поэтому делаю по аналогии с вашим кодом, но учитывая специфику Power Basic-а. Вроде бы делаю всё как надо, но вместо нормального аудиофайла получается визгливое пищание приблизительно на половину всего времени звучания, ну а потом действительно воспроизводится нужный текст, но обрезается последняя часть. Тестовый текст у меня вот такой: "Проверка связи, проверка связи...". А воспроизведение выглядит вот так приблизительно: "<писк> Проверка связи, провер". Ну то есть получается какой-то сдвиг. Откуда он берётся, понять не могу никак ![]() Сначала я грешил на то, что хэдер составляю и прикрепляю неправильно. Но нет... Сейчас вот специально установил SOUND.FORGE, а там есть функция воспроизведения "сырых" аудиофайлов. Ну то есть когда на диск скинут аудиопоток без хэдера вовсе. Ну и звучание абсолютно такое же, как я описал выше. Я, конечно, понимаю, что Power Basic в этой ветке как бы не совсем уместен, но может быть всё-таки что нибудь подскажете? Откуда берётся это злополучный сдвиг?
0
|
||||||
|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
|||||||||||||||||
| 19.02.2020, 19:04 [ТС] | |||||||||||||||||
|
это программа для чтения текстов, в которых перемешаны русские и английские слова. Русские фрагменты читает русский движок, английские - английский. Чередования фрагментов очень частые, потому что это тексты по программированию ![]() Ну и задумано так, что все эти "куски" преобразуем в большую-пребольшую строку, которая постепенно "накапливается" в памяти, а когда она достигает критической массы, вот тогда-то мы её и скидываем на диск, предварительно приделав к ней хэдер. Поэтому нужны именно строки... Хотя если можно как-то "суммировать как строки" массивы байтов, тогда можно обойтись совсем без строк, но мне не приходит в голову, как это можно сделать. На самом деле, у меня сейчас почему-то не получается даже прсто скинуть на диск полученный массив байтов. Если делаю вот так:
А если делаю вот так:
Добавлено через 41 минуту P.S. Хотя вот сейчас я, пожалуй, всё-таки сообразил, как можно "суммировать" массивы байтов. Мы же знаем их размеры, следовательно можно располагать их в памяти друг за другом с помощью POKE, ну а потом уже считать накопившийся огромный массив байтов сразу на диск, предварительно приделав к нему спереди хэдер. Добавлено через 2 часа 32 минуты P.P.S. Так и не сообразил, как можно грамотно скинуть на диск полученный массив байтов без использования строки. Поэтому (исключительно для проверки гипотезы) скинул "по рабоче-крестьянски" с помощью цикла:
0
|
|||||||||||||||||
|
sleep
4926 / 4576 / 840
Регистрация: 13.04.2015
Сообщений: 9,727
|
|||||||
| 19.02.2020, 19:17 | |||||||
|
А разве без цикла не работает ?
0
|
|||||||
|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
|||
| 19.02.2020, 21:14 [ТС] | |||
|
0
|
|||
|
sleep
4926 / 4576 / 840
Регистрация: 13.04.2015
Сообщений: 9,727
|
||
| 19.02.2020, 21:44 | ||
|
0
|
||
|
Модератор
|
||||
| 19.02.2020, 22:50 | ||||
|
Добавлено через 1 минуту
0
|
||||
|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
||||||||||||||
| 20.02.2020, 14:45 [ТС] | ||||||||||||||
![]() Просто где-то когда-то прочитал, что это удобно, вот с тех пор и пользуюсь ![]() Не, ну правда, в строке же каждый символ кодируется значением от нуля до 255, ну а это же и есть байт. Строки очень удобно соединять между собой (в отличие от тех же массивов байтов). Ну то есть строку можно рассматривать как упорядоченный набор байтов, которым удобно манипулировать. И мы вовсе не собираемся её когда-нибудь распечатывать ![]() ![]() Сейчас в отдельной простенькой программке получилось запросто вот так:
![]() ![]() Заодно скидываю примерное звучание записанных аудиофрагментов. Загадочным образом они получаются разными, но всё-таки очень похожими: сначала душераздирающий скрежет, потом голос диктора, которого всякий раз обрывают на полуслове ![]() А вот весь исходник для тех, кому лень скачивать ![]()
0
|
||||||||||||||
|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
|||||||
| 20.02.2020, 18:23 [ТС] | |||||||
|
Не понимаю, что происходит
![]() Пробую сейчас вставить (дополнительно) вот такой фрагмент кода
![]() Вот так у меня и тогда было, я припоминаю, поэтому я и решил тогда, что скинуть массив байтов на диск у меня не получится. Добавлено через 2 часа 2 минуты
0
|
|||||||
|
Модератор
|
||||||||
| 21.02.2020, 09:32 | ||||||||
Сообщение было отмечено Power_Basic как решение
Решение
1
|
||||||||
|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
|||
| 21.02.2020, 12:04 [ТС] | |||
|
Один лёгкий штрих и всё заработало! ![]() Но как вы могли проверить свою догадку на практике?!? Методом дедукции приходим к выводу, что у вас там тоже имеется под рукой компилятор Power Basic'а, и это меня сильно радует, поскольку мне уже казалось, что я теперь один такой "невымерший мамонт" на всём белом свете ![]() Кстати, я сейчас припоминаю, что вычитал о такой возможности где-то в справочной системе Power Basic'а, но только сейчас вот поискал и не смог найти это место. Короче, там смысл был приблизительно такой, что то ли в COM-программировании, то ли в процессе работы в WinAPI функциями, то ли при конвертации массивов Visual Basic'а в массивы Power Basic'а используется SAFEARRAY. И чтобы обойти все возникающие сложности как раз-то и рекомендовалось использовать этот хитрый трюк - упаковывать массивы байтов в строки. На самом деле, для меня все эти SAFEARRAY это сложно, пробовал когда-то разобраться, но почему-то не получилось ![]() А может быть и не о SAFEARRAY там шла речь, сейчас уже точно не помню. Но это рекомендовалось именно для обхода каких-то сложностей. Метод мне понравился и запомнился. Ну и на практике-то ведь работает же! ![]() Ведь в нашей совместной программе аудиопоток идеально сохранился именно в строке! ![]() Ну и да, разумеется, строки должны быть именно АНСИ-шные и ещё важно не промахнуться со считыванием именно содержимого самой строки, а не содержимого её дескриптора (ну то есть использовать функцию STRPTR, а не VARPTR, как для строк фиксированной длины, например).
0
|
|||
| 21.02.2020, 12:04 | |
|
Помогаю со студенческими работами здесь
20
Как вытащить звук из аудиопотока? После того, как вытянул/вставил оперативную память высветилась странная запись.
Речевое воспроизведение текста! TTS Синтез голоса из строки (TTS) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|