Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/56: Рейтинг темы: голосов - 56, средняя оценка - 4.54
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443

Быстрый старт в изучении C++ для относительно опытных программистов Basic

18.04.2020, 16:11. Показов 13221. Ответов 253

Студворк — интернет-сервис помощи студентам
В этой ветке предлагаю обсуждать сходства и различия между C++ и Visual Basic.
Ну хотя бы для упрощения процесса изучения параллельного (дополнительного) языка для тех, кто уже относительно неплохо знаком с Visual Basic.
Ну просто как-то "не вкусно" начинать изучение совсем уж с нуля, когда, в принципе, уже и без того много знаешь (циклы, ветвления, указатели, видимость переменных ... ).

На самом деле, начал сейчас просмортр на ютубе курса по C++. Дядька очень толково и понятно всё объясняет, явно есть у него талант хорошего преподавателя.

Самые первые отличия, которые бросились в глаза, это:
- комменты обозначают двумя косыми чертами вместо апострофа,
- в конце каждой строки точка с запятой,
- все процедуры, функции, "тела" циклов ... в фигурных скобках,
- вложенные циклы можно описывать одной строкой,
- если переменная объявлена, но ей не присвоено значение, то она содержит случайный "мусор" из памяти, а не как у нас в бейсике, где сразу получает значение ноль или пустую строку,
- массивы с квадратными скобками вместо круглых,
- область видимости переменных ограничена фигурными скобками и причём неважно функция это, цикл или "тело" функции IF, а не как у нас область видимости переменных ограничена только функциями и процедурами.

Ветка открытая, пишите кто хочет.
Особенно приветствуются советы опытных специалистов, уже овладевших несколькими языками.
Ну уж им-то гораздо виднее, в чём сходство и различие разных языков.

Сказать по правде, лично мне сейчас C++ и его младший брат нужны, главным образом, для удобства изучения материалов MSDN.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.04.2020, 16:11
Ответы с готовыми решениями:

предложение для опытных программистов
добрый день уважаемые госпда программисты - необходима помощь по выполнению лабораторных по предмету Операционные Системы. Ищу человека...

Быстрый старт и софт для Modicon TM251MESE (Schneider Electric)
Так сложилась ситуация, что в скором времени предстоит познакомиться с ПЛК TM251MESE от Sneider Electric. Начал интересоваться как...

Книги или справочники для опытных(или проффесиональных) программистов!
Пожалуйста, Подскажите книги или справочники для опытных и проффесиональных программистов! Особенно хотелось бы найти: 1) полный...

253
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
21.04.2020, 23:41
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Вызвать процедуру записи в wav в несколько потоков без ошибок мне так и не удалось.
Зачем? Пиши в буфер, а из буфера сразу кодируй в mp3 без всяких файлов. Mp3 фреймы можно склеивать потом без проблем.
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
21.04.2020, 23:41  [ТС]
Цитата Сообщение от locm Посмотреть сообщение
Не нужно путать ЯП и компиляторы. Для Си много компиляторов и у каждого свои особенности.
По правде сказать, мне это очень непривычно. В VB, в VBA, в PowerBasic'е, да и ассемблерах тоже везде ровно по одному компилятору. Ну, конечно, если не считать компиляторы для разных версий разными компиляторами.

Цитата Сообщение от Power_Basic
А если серьёзно, то сишная рантайм-библиотека всё-таки присутствует (и всегда будет присутствовать) во всех версиях Windows
Цитата Сообщение от locm Посмотреть сообщение
Например далеко не во всех виндах по умолчанию будет MSVCP14.dll или более свежий рантайм. В каждой студии своя рантайм библиотека.
Ну у меня сейчас задача очень простая - чтобы мои C++ программы, которые я возможно (что ещё совсем не факт) когда-нибудь буду писать, могли запускаться на современном десктопе и на слабеньком нетбуке. Ну а если там есть возможность компилировать под разные версии рантайм-библиотек (наверно для этого там выбор компиляторов?), ну тогда так и буду компилировать одну и ту же программу разными компиляторами под разные целевые машины.
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
21.04.2020, 23:43
Цитата Сообщение от Power_Basic Посмотреть сообщение
А, понял, это же описания COM-библиотек, которые подключаются к проекту на VB6 через меню Project > References, а в PowerBasic'е с помощью COM-браузера, где можно просто щёлкнуть по имени соответствующей DLL и будут автоматически написаны все заголовки для работы с этой библиотекой.
Необязательно COM библиотек. Стандартные функции там тоже могут быть.
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
22.04.2020, 01:53  [ТС]
Цитата Сообщение от Power_Basic
Тогда получается, что наши с вами диалекты бейсиков в этом аспекте даже круче чем сам C++?! Ну дела
А если серьёзно, то сишная рантайм-библиотека всё-таки присутствует (и всегда будет присутствовать) во всех версиях Windows и не занимает так много места как фреймворк.
Цитата Сообщение от The trick Посмотреть сообщение
Visual C++ позволяет компилировать так чтобы в зависимостях были только системные либы.
То есть в С++ тоже без рантайм-библиотек можно обходиться, получается ...
Ну вот, а я только-только успел нос кверху задрать

Добавлено через 9 минут
Цитата Сообщение от The trick Посмотреть сообщение
Необязательно COM библиотек. Стандартные функции там тоже могут быть.
Сейчас даже пришлось гуглить, что такое "стандартные функции С++". Как я понял, в бейсиках это называется просто операторами языка. А ну да, припоминаю, что в С надо соответствующую библиотеку всякий раз подключать для каждого "набора действий", - отдельную библиотеку для математических функций, отдельную для функций работы со временем, ну и так далее.

Добавлено через 1 час 50 минут
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Проштудировал по этой теме 4PDA форумы, есть там люди, которых активно интересуют подобные программы. MP3book2005 хвалят в основном, хотя и ругают автора за жадность и нетерпимую борьбу с пиратами.
Да автор вообще чудак какой-то
Всё время с пиратами боролся, новую версию выпускал чуть ли не каждые полгода (но её каждый раз сразу же ломали), а в самом конце сделал "жест великодушия" - выложил совершенно бесплатную версию своего детища, забросил программирование и занялся профессиональной фотографией.
А до этого ещё и под суд успел попасть, но правда, там мелочёвка какая-то, чисто административное дело. Но в интернете материалы того суда до сих пор висят. Найти очень легко, поскольку фамилия у него ну очень редкая, да к тому же ещё и двойная. Ни с кем его не спутать даже при желании.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Читал, что умеет она в несколько потоков, кто то писал, что даже 8.
Ну значит, наверно, так и есть. Но у меня-то их аж 24 штуки!

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Вызвать процедуру записи в wav в несколько потоков без ошибок мне так и не удалось
Странно, у меня все 24 файла записываются на диск параллельно и совсем без ошибок. И если вся программа не зависает, то так и остаются на диске 24 полноценных качественных wav-файлов.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Я понял, что с одним экземпляром движка это не сделать в принципе.
У меня сейчас в текущей редакции программы 24 движка, каждый из которых инициализируется в своём потоке. Ну получается как бы 24 программы, работающие одновременно на одну задачу.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Надо каждый раз инициализировать новый экземпляр SAPI5, после отработки его удалять,
Зачем?! Это же как бы 24 программы, работающие параллельно и одновременно, и каждая из них обрабатывает свой "кусок" текста. Весь текст разбиваем на "куски" в самом начале. В каждом потоке свой движок. В самом начале работы потока мы его инициализируем

PureBasic
1
2
3
  INSTANCE obj_IspVoice AS IspVoice
    obj_IspVoice = NEWCOM CLSID $CLSID_SpVoice
    IF ISFALSE(ISOBJECT(obj_IspVoice)) THEN MSGBOX "Не смог создать ссылку на iSpVoice Interface."
А в самом конце он просто сам "умирает", поскольку его переменная выходит из своей области видимости.
Ну и для порядка сбрасываем эту переменную (это делать совсем не обязательно, но это "хороший стиль" и всё такое):

PureBasic
1
    obj_IspVoice = NOTHING
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Надо каждый раз инициализировать новый экземпляр SAPI5, после отработки его удалять, и всё это надо в потоке, которому передать параметры и следить за его работой! Сложности не соизмеримые с результатом.
Да нет там никаких сложностей! Ну вот давайте прикреплю в качестве примера один из wav-файлов. Это озвучивание списка счётчиков PDH в мрей системе (самый первый "кусок").
Ну и ещё положу в архив исходный txt-файл (600 кБ) для сравнения качества продукта

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Гораздо проще написать отдельный exe-шник (к стати, всего 15 Кб вышел), который управляется с параметрами ком. строки, и уже из основной программы управлять его запусками. В принципе то же самое делает MP3book2005.
Ну это как-то сложно всё. Что-то вроде bat-ника что ли?

Цитата Сообщение от Pro_grammer Посмотреть сообщение
кодирует lame.exe в mp3.
Ну это уже в самом-самом конце. Я пока этого даже и не делаю, потому что это очень легко будет сделать. Даже и не интересно как-то
А lame.exe это утилита, которую можно использовать даже в своих коммерческих программах, если я ничего не путаю. Что-то вроде "общенародного достояния"

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Голос Николай отработал за 6.38 минут
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Голос Алёна 22k, более современный,
Ну нет, так не интересно
У меня же всё началось именно с того, что все русские слова должен озвучивать именно русский голос, а все английские - именно английский
А в скорости посоревноваться с MP3book2005 мне уже гораздо позже озорная идея пришла

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Заложил я 10 потоков, загрузил нашего Льва Толстого "Война и мир" оба 2 тома. Разбил по 100 строк - 127 штук вышло.
Это такие характеристики текста :
12 573 строки, 1 483 566 символов, ~ 25 часов чтения голосом.
Голос Николай отработал за 6.38 минут
Мой 4-х ядерный i5 грузился от 8% до 50%. Т.е смело могу ещё + 8 потоков накинуть, и за 3 минуты закодировать!.
Голос Алёна 22k, более современный, грузил комп на 98-100%, при 10 потоках работал 6.91 минуту, считай на пределе.
Теперь MP3book2005, работал 32 минуты, грузил комп на 25%. Т.е. по всему видно в 1 поток, и если бы на 1 ядро, то 100% загрузка.
Ну я прямо вот сейчас не могу запустить и проверить скорость "на рекордное время", потому что у меня как раз именно сейчас основная версия на "ремонте", сабильность пытаюсь найти, чтобы никогда не зависалою Но вот, если интересно, файл отчёта из архивов по одной из предыдущих версий:

++++++++++++++++++++++++++++++++++++++++ ++++++++++
++++++++++++++++++++++++++++++++++++++++ ++++++++++
12 апреля 2020 г.
16:57:11.229
--------------------------------------------------
Поток номер 6
12.04.2020 16:57:12.105 - 12.04.2020 16:58:01.918
Days =0
Hours =0
Minutes =0
Seconds =49
MSeconds =813
Ticks =59813

Поток номер 5
12.04.2020 16:57:12.105 - 12.04.2020 16:58:03.298
Days =0
Hours =0
Minutes =0
Seconds =51
MSeconds =193
Ticks =61193

Поток номер 12
12.04.2020 16:57:12.105 - 12.04.2020 16:58:24.499
Days =0
Hours =0
Minutes =1
Seconds =12
MSeconds =394
Ticks =82394

Поток номер 4
12.04.2020 16:57:12.105 - 12.04.2020 16:58:25.479
Days =0
Hours =0
Minutes =1
Seconds =13
MSeconds =374
Ticks =83374

Поток номер 1
12.04.2020 16:57:12.105 - 12.04.2020 16:58:27.899
Days =0
Hours =0
Minutes =1
Seconds =15
MSeconds =794
Ticks =85794

Поток номер 2
12.04.2020 16:57:12.105 - 12.04.2020 16:58:29.158
Days =0
Hours =0
Minutes =1
Seconds =17
MSeconds =53
Ticks =87053

Поток номер 7
12.04.2020 16:57:12.105 - 12.04.2020 16:58:30.578
Days =0
Hours =0
Minutes =1
Seconds =18
MSeconds =473
Ticks =88473

Поток номер 3
12.04.2020 16:57:12.105 - 12.04.2020 16:58:33.629
Days =0
Hours =0
Minutes =1
Seconds =21
MSeconds =524
Ticks =91524

Поток номер 8
12.04.2020 16:57:12.105 - 12.04.2020 16:58:35.358
Days =0
Hours =0
Minutes =1
Seconds =23
MSeconds =253
Ticks =93253

Поток номер 11
12.04.2020 16:57:12.105 - 12.04.2020 16:58:37.809
Days =0
Hours =0
Minutes =1
Seconds =25
MSeconds =704
Ticks =95704

Поток номер 9
12.04.2020 16:57:12.105 - 12.04.2020 16:58:38.884
Days =0
Hours =0
Minutes =1
Seconds =26
MSeconds =779
Ticks =96779

Поток номер 10
12.04.2020 16:57:12.105 - 12.04.2020 16:58:39.799
Days =0
Hours =0
Minutes =1
Seconds =27
MSeconds =694
Ticks =97694

ОБЩИЙ ИТОГ
12.04.2020 16:57:11.229 - 12.04.2020 16:58:43.259
Days =0
Hours =0
Minutes =1
Seconds =32
MSeconds =30
Ticks =102030
--------------------------------------------------
12 апреля 2020 г.
16:58:43.259
++++++++++++++++++++++++++++++++++++++++ ++++++++++
++++++++++++++++++++++++++++++++++++++++ ++++++++++
Это тот же самый текст, но только тогда было задействовано 12 потоков.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Смысл соревнования есть, MP3book2005 не шибко быстрая.
Но надо ещё учитывать, что у нас-то сейчас совсем без словарей (у меня это впереди), а в MP3book2005 Николай использует так называемый "народный словарь", а он ого-го какой увесистый.

И на всякий случай, у меня сейчас вот такие голоса и вот такая система (на скриншотах).

PureBasic
1
2
$Russian_voice_name = "Vocalizer Expressive Yuri Harpo 22kHz"
$English_voice_name = "ScanSoft Daniel_Full_22kHz"

P.S. Всё-таки заставили меня конвертировать в MP3, отругали, что wav-файл даже в zip-архиве слишком большой.
1
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
22.04.2020, 02:10  [ТС]
Не прикрепились вложения почему-то... Вот они.
Миниатюры
Быстрый старт в изучении C++ для относительно опытных программистов Basic   Быстрый старт в изучении C++ для относительно опытных программистов Basic  
Вложения
Тип файла: zip Озвучка.zip (6.88 Мб, 4 просмотров)
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
22.04.2020, 02:46
Цитата Сообщение от Power_Basic Посмотреть сообщение
Правильно я понял, что та версия C++, которая входит в состав VS 2019, умеет создавать EXE-файлы, для работы которых совсем не требуется поддержка среды Net Framework при прогоне?
Туда входят две версии С++ и С++.NET ака СX. Для какой создаете так и будет. При этом WinForms и WPF - это .NET библиотеки и соответсвенно доступны только из C++.NET. А для нативного у Майкрософта только MFC. C толковыми нативными фреймверками это совсем не к Майкрософту а к Embarcadero и Qt
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
22.04.2020, 03:38  [ТС]
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Туда входят две версии С++ и С++.NET ака СX. Для какой создаете так и будет.
Понял, это хорошо, если так.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
При этом WinForms и WPF - это .NET библиотеки и соответсвенно доступны только из C++.NET. А для нативного у Майкрософта только MFC. C толковыми нативными фреймверками это совсем не к Майкрософту а к Embarcadero и Qt
Нет, мне фреймворки-то как раз вообще не нужны, в том-то всё и дело

Добавлено через 9 минут
Цитата Сообщение от The trick Посмотреть сообщение
VB6 поддерживает библиотеки типов (tlb). Вот есть такие типа win32.tlb и т.д. которые можно подключить в проект и функцие объявленные там будут доступны для использования. В аттаче пример. Там не все функции, но библиотеки можно дополнять и т.п. Кстати с такими библиотеками приложение будет работать быстрее.
Похоже, и у вас тоже вложение не прикрепилось, а вы и не заметили
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
22.04.2020, 06:40
Цитата Сообщение от The trick Посмотреть сообщение
Зачем? Пиши в буфер, а из буфера сразу кодируй в mp3 без всяких файлов. Mp3 фреймы можно склеивать потом без проблем.
Не выйдет, вернее выйдет, но будет медленно - звук в SAPI пишется в реальном времени. А вот в файл пишет намного быстрее, пишет то без звука! Потому все существующие кодировщики пишут в несколько файлов на диск. Время на кодировку в mp3 отдельно не тратится - пока кодируется первый кусок, то читается следующий, всё параллельно. Куски mp3 собирать в один тоже не надо. Это очень неудобно, когда вся книга в одном файле. Не все портативные устройства умеют запоминать место, где остановился по средине файла, а вот запоминать последний файл могут все. Минут по 10-15 самое то. Как раз где то и выходит примерно по 100 строк +-

Добавлено через 22 минуты
Цитата Сообщение от Power_Basic Посмотреть сообщение
У меня же всё началось именно с того, что все русские слова должен озвучивать именно русский голос, а все английские - именно английский
У нашего, у Толстого, в "Войне и Мире" в основном русский и французский. Как тут быть? А если итальянский, или ещё какой?
Этот же Николай умеет хотя бы как то читать латиницу, технические тексты в принципе понять можно было бы о чем речь.

Не по теме:

Послушал ваш "Объект Система System содержит счетчики, которые относятся ко всем процессорам данного". Это разрыв мозга. Сразу подумалось, "Не дай Боже когда нибудь ослепнуть!". Ни чего не понимаю, о чем речь. С текста как то сразу всё усваивается и всё представляешь сразу в голове пока читаешь, а тут одни слова, вроде понятные, но картинки нет в голове. И ещё вставки эти на английском... Вы их настройте, что бы он медленнее читал, а то темп речи не совпадает с русским, стреляет словами, а надо как с иностранцами, мееедлеееенно.

0
Эксперт по электронике
6514 / 3143 / 332
Регистрация: 28.10.2011
Сообщений: 12,358
Записей в блоге: 7
22.04.2020, 12:19
Цитата Сообщение от Power_Basic Посмотреть сообщение
да и ассемблерах тоже везде ровно по одному компилятору.
FASM, NASM, MASM, TASM, GAS и т. д. Это без учета компиляторов ассемблера для других платформ.

Цитата Сообщение от Power_Basic Посмотреть сообщение
То есть в С++ тоже без рантайм-библиотек можно обходиться, получается
Установите студию и попробуйте собрать без рантайм библиотеки и чтобы размер был не несколько МБ.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Не выйдет, вернее выйдет, но будет медленно - звук в SAPI пишется в реальном времени. А вот в файл пишет намного быстрее, пишет то без звука!
Конвертирование в MP3 требует не так много времени.
При скорости входных данных 140 кбайт/с (44100 * 16 бит * стерео) и MP3 битрейте 128 кбит/с, процессор загружен чуть больше чем на процент.



Комп давно не новый и современных процессор будет загружен значительно меньше.
Если снизить скорость входящего потока и MP3 битрейт до 16 кбит/с (для голоса должно быть достаточно) это значительно снизит нагрузку.

Код перекодировки WAVE в MP3 в реальном времени. Создание раздела FreeBasic (голосование)
1
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
22.04.2020, 13:36
Цитата Сообщение от locm Посмотреть сообщение
Конвертирование в MP3 требует не так много времени.
Я выше написал, что конвертирование в MP3 вообще не требует отдельно времени и значимых ресурсов. Всё идет параллельно.
Основное время и ресурсы тратится на преобразование текста в звук самим движком SAPI, и зависит от языкового движка, мы на это повлиять не можем. Например Николай 16K - очень мало требует ресурсов, а уже Анна 22K значительно больше, но там и результат лучше.
Ещё в программе могут использоваться различные словари, расстановка правильного ударения это тоже требует ресурсов.
Запись в файл можно производить с любым качеством, но как видно, у Николая 16К, значит нет смысла пытаться писать с лучшим качеством, чем исходное 16 кбит/с. Анна пишется с качеством 22kHz 16Bit Mono.
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
22.04.2020, 15:27
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Не выйдет, вернее выйдет, но будет медленно - звук в SAPI пишется в реальном времени. А вот в файл пишет намного быстрее, пишет то без звука!
Не пойму, что запись в SpMemoryStream медленней чем в файл?

Цитата Сообщение от Pro_grammer Посмотреть сообщение
А вот в файл пишет намного быстрее, пишет то без звука! Потому все существующие кодировщики пишут в несколько файлов на диск.
Возможно ты меня не понял, я говорю о методе который используется к примеру тут.
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
22.04.2020, 15:35
Цитата Сообщение от Power_Basic Посмотреть сообщение
То есть в С++ тоже без рантайм-библиотек можно обходиться, получается
Если не использовать внешние зависимости то можно, ну так во всех ЯП. Поставьте WDK и линкуйте нужный рантайм той версии с которой ваше приложение должно работать (к примеру msvcrt_winxp.obj для XP и выше).

Цитата Сообщение от Power_Basic Посмотреть сообщение
Сейчас даже пришлось гуглить, что такое "стандартные функции С++". Как я понял, в бейсиках это называется просто операторами языка. А ну да, припоминаю, что в С надо соответствующую библиотеку всякий раз подключать для каждого "набора действий", - отдельную библиотеку для математических функций, отдельную для функций работы со временем, ну и так далее.
Стандартные функции это обычные функции как WINAPI.

Цитата Сообщение от Power_Basic Посмотреть сообщение
Похоже, и у вас тоже вложение не прикрепилось, а вы и не заметили
Перезалил.
Вложения
Тип файла: zip winu.zip (263.9 Кб, 3 просмотров)
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
22.04.2020, 16:29  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Зачем? Пиши в буфер, а из буфера сразу кодируй в mp3 без всяких файлов. Mp3 фреймы можно склеивать потом без проблем.
В идеальном варианте именно так и должно быть. Всё делаем в ОЗУ и только в самом-самом конце сбрасываем готовые MP3 файлы на диск. Эта мысль родилась, когда я понаблюдал за работой MP3Book в Total Commander'е. Там очень хорошо видно, как у автора организована работа. Сначала на диске появляется файл 001.WAV, который начинает быстро увеличиваться в размерах. Когда он достигает заказанного пользователем размера (по продолжительности звучания), его конвертируют в файл 001.Mp3, и начинается запись файла 002.WAV, ну и так далее.
Но ведь даже новичков учат, что к диску надо обращаться как можно реже, потому что он гораздо медленней чем ОЗУ. Ну вот я и решил попробовать всю работу перенести в ОЗУ.
На самом конечном этапе не хватило опыта работы с WINAPI, да и методических материалов по работе SAPI в связке с ОЗУ, мягко говоря, очень мало. Все уже привыкли работать именно с диском. Ну вот я и "вернулся к истокам", в смысле, к диску
0
Эксперт по электронике
6514 / 3143 / 332
Регистрация: 28.10.2011
Сообщений: 12,358
Записей в блоге: 7
22.04.2020, 16:36
Цитата Сообщение от Power_Basic Посмотреть сообщение
Эта мысль родилась, когда я понаблюдал за работой MP3Book в Total Commander'е. Там очень хорошо видно, как у автора организована работа. Сначала на диске появляется файл 001.WAV, который начинает быстро увеличиваться в размерах. Когда он достигает заказанного пользователем размера (по продолжительности звучания), его конвертируют в файл 001.Mp3, и начинается запись файла 002.WAV, ну и так далее.
У SSD будет уменьшать ресурс. Зачем запивать WAV файл на диск? Вам уже много раз рекомендовали полученные звуковые данные конвертировать в MP3 и после записывать на диск. То есть WAV файлы не нужно сохранять на диске.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
22.04.2020, 16:56
Цитата Сообщение от The trick Посмотреть сообщение
Возможно ты меня не понял, я говорю о методе который используется к примеру тут.
Ну да, я подумал, что писать в реальном времени с голоса.
Ерунда всё это, по любому самое медленное место это сам конвертер текст->звук, а куда уже писать готовый звук, в файл или в память практически на конечное время выхода готового файла MP3 не влияет, тем более у меня SSD, все эти мегабайты летают мгновенно.

Добавлено через 9 минут
Цитата Сообщение от locm Посмотреть сообщение
У SSD будет уменьшать ресурс.
Ресурс современных SSD далеко не самый актуальный параметр, который должен вас смущать.
Из технических характеристик современного обычного, бытового SSD на ячейках MLS следует, что его хватит на 5 лет ежедневной перезаписи 150 Гб. Не думаю, что такие объёмы информации дома кто то переписывает ежедневно
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
22.04.2020, 17:17  [ТС]
Цитата Сообщение от Power_Basic
У меня же всё началось именно с того, что все русские слова должен озвучивать именно русский голос, а все английские - именно английский
Цитата Сообщение от Pro_grammer Посмотреть сообщение
У нашего, у Толстого, в "Войне и Мире" в основном русский и французский. Как тут быть? А если итальянский, или ещё какой?
Да я бы ради Льва Толстого вообще бы не стал бы начинать всё это "мероприятие", тратить столько усилий
Художественная литература уже давным-давно почти вся озвучена. Скачать готовую аудиокнигу, да и слушать
Мне-то хотелось озвучивать тексты именно на КОМПЬЮТЕРНУЮ тематику. А они же все состоят именно из "смеси" русского и английского.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Этот же Николай умеет хотя бы как то читать латиницу, технические тексты в принципе понять можно было бы о чем речь.
Да в том-то и дело, что "хотя бы как то"
Началось с того, что я попробовал приловчиться воспринимать на слух простенькие компьютерные тексты. Ну самую-самую элементарщину. В качестве первой "жертвы" выбрал книгу Лукина "V6_Самоучитель для начинающих". Ну думал просто попробовать слушать по утрам, ещё не вставая с постели, с помощью планшета.
Скачал с Плей-маркета читалку, которая умеет озвучивать книжки. Но оказалось, что русские-то слова тётка (которая там по умолчанию) читает замечательно, а вот английские коверкает до неузнаваемости. Затрахала меня уже тем, что постоянно вместо "вИжуал бЭйсик" говорит "висОль бЭйсик". Нет, если с английским совсем не дружить, тогда может быть "оно и так сойдёт", но я-то "дружу" и мне это реально режет слух.
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
22.04.2020, 17:24
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Из технических характеристик современного обычного, бытового SSD на ячейках MLS следует, что его хватит на 5 лет ежедневной перезаписи 150 Гб
Только вот SSD на MLС это из серии антиквариата. Нонче в моде TLC а то и QLC. Но в общем это только подтверждает что в домашних условиях уработать SSD по ресурсу малореально, а то бы его в 10 раз не снижали. На свои SSD скока пишется по определению даже не думаю. Два "старичка" которым более трех лет в результате показывают износ мелкий 240 на котором система жила 5% большой 480 2%. Т.е. оба решили меня пережить. А свежий NVMe и SSD которым меньше года там даже еще до 1% не дошло.
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
22.04.2020, 17:25
Power_Basic, быстро посмотрел на SAPI. Как я понял никакая многопоточность не нужна совсем. Каждый объект SpVoice создает поток в котором проигрывается файл. Все что нужно это создать необходимое количество объектов и запустить запись в стрим, затем ловить события.
0
22.04.2020, 17:59  [ТС]

Не по теме:

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Послушал ваш "Объект Система System содержит счетчики, которые относятся ко всем процессорам данного". Это разрыв мозга. Сразу подумалось, "Не дай Боже когда нибудь ослепнуть!". Ни чего не понимаю, о чем речь. С текста как то сразу всё усваивается и всё представляешь сразу в голове пока читаешь, а тут одни слова, вроде понятные, но картинки нет в голове.
Ну это же был не "выставочный экзумпляр" вовсе, а всего лишь образец того, как русский движок читает русские слова, а английский - английские.
На самом деле, это же просто список всех PDH счётчиков в системе Windows_10, скопированный прямо из реестра (смотрите на скриншоте) и озвученный безо всякой предварительной обработки.

Там всё организовано вот так:
- индекс 1-го счётчика,
- имя 1-го счётчика (без пути к нему),
- краткое описание этого счётчик,
- индекс 2-го счётчика,
- ну и так далее ...

Цитата Сообщение от Pro_grammer Посмотреть сообщение
И ещё вставки эти на английском... Вы их настройте, что бы он медленнее читал, а то темп речи не совпадает с русским, стреляет словами, а надо как с иностранцами, мееедлеееенно.
Ну а для меня это вполне подходящий темп :)
Другого мне не надо :)

Миниатюры
Быстрый старт в изучении C++ для относительно опытных программистов Basic  
0
Эксперт по электронике
6514 / 3143 / 332
Регистрация: 28.10.2011
Сообщений: 12,358
Записей в блоге: 7
22.04.2020, 18:02
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Из технических характеристик современного обычного, бытового SSD на ячейках MLS
Современные построены на типе памяти TLC.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.04.2020, 18:02
Помогаю со студенческими работами здесь

набор опытных C++ программистов
Большой иностранный банк проводит набор опытных C++ программистов для IT-департамента своего московского офиса. Необходимы кандидаты с...

Приглашаю На работу Опытных Программистов
Всем привет . Я ищю Хороших программистов для работы над Онлайн игрой ( в типе neverlands) От вас Требую одно хорошую ...

Нужен совет опытных программистов на C#
Всем добрый день! Я здесь абсолютно новенький! Так что прошу сразу не кидать камнями если задаю вопросы не там где нужно! :) Совсем...

Нужен совет опытных программистов
Задача: Написать систему логирования LS кода, подсчета производительности (как долго исполняется LS код) и учета ошибок. Цель: получить...

Требуется совет опытных программистов
Основы С++ более менее изучены. Что же дальше? Что учить чтоб писать хоть какие то простенькие прикладные программы?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод Сайт называется reddit: The Thinkpad X220 Tablet is the best budget school laptop period. Это. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru