|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
|||||||
Как вывести запись аудиопотока TTS в память?10.02.2020, 12:12. Показов 4241. Ответов 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
4925 / 4574 / 840
Регистрация: 13.04.2015
Сообщений: 9,724
|
|||||||
| 19.02.2020, 19:17 | |||||||
|
А разве без цикла не работает ?
0
|
|||||||
|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
|||
| 19.02.2020, 21:14 [ТС] | |||
|
0
|
|||
|
sleep
4925 / 4574 / 840
Регистрация: 13.04.2015
Сообщений: 9,724
|
||
| 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) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|