|
|
||||||
.NET 4.x Обработка звука полученного от модема14.04.2016, 12:13. Показов 2484. Ответов 11
Метки нет (Все метки)
Привет! Я так и не понял куда мне написать это сообщение, попробую сюда. Суть такая: есть модем USB Huaweii E173. После приёма вызова и ввода АТ-команды "AT^DDSETEX=2", он начинает выдавать поток данных в порт. Я этот поток записал в файл и теперь пытаюсь его преобразовать в звук.
Насколько мне известно, звук должен быть 8 кГц, 16 бит, моно. И блоками по 320 байт. Пользуясь библиотекой NAudio, пытаюсь вывести звук следующим образом:
Я пока не делаю попыток вывести звук "в реальном времени", т.к. на это может уйти много денег. А так я записал всё что получил модем и теперь ковыряю это. Если я этот набор байтов (файл) засуну в MemoryStream и потом в SoundPlayer, то последний будет ругаться на то, что заголовок повреждён. Я очень слабо понимаю какие данные приходят от модема. То ли каждый блок 320 байт по сути самостоятельный WAV файл, то ли ещё что. Но когда я пытаюсь вручную найти стандартные байты заголовка в файле, вообще их не нахожу. Помогите пожалуйста, что я делаю не так? Если кому интересно, вот ссылка на файл с данными от модема: http://www.filedropper.com/201... -11rawcom1
0
|
||||||
| 14.04.2016, 12:13 | |
|
Ответы с готовыми решениями:
11
Обработка массива, полученного из api vk Обработка полученного docx-файла Обработка исключения путём взятия ошибки из полученного http запроса |
|
|
||
| 14.04.2016, 12:20 | ||
|
Бинарные данные нельзя писать в текстовый файл. Звук - не текст. Используйте для записи в файл метод FileStream.Write(byte[])
1
|
||
|
|
||||||||||||||||
| 14.04.2016, 12:44 [ТС] | ||||||||||||||||
|
Storm23, К сожалению, ранее со звуком практически не имел дело, потому допускаю грубые ошибки. Сейчас попробую!
Добавлено через 8 минут Пробую записать так:
Добавлено через 5 минут Попробовал вывести звук напрямую:
Storm23, выходит, мне этот поток надо сразу писать в аудио файл? Я почему-то думал, что можно и в текстовом формате всё записать.
0
|
||||||||||||||||
|
|
|||||||
| 14.04.2016, 12:46 | |||||||
Сообщение было отмечено Mans7 как решение
Решение
Mans7, После открытия файла, вам нужно передвигать позицию записи в конец файла:
1
|
|||||||
|
|
||
| 14.04.2016, 13:19 [ТС] | ||
|
Storm23,
Добавлено через 12 минут Благодаря вашей подсказке с передвижением позиции в файле, получается записать в файл (даже текстовый) всё что я произношу. И прочитать удаётся. Однако прерывистость сохраняется. Ну, это уже, видимо, параметры самой записи. Хотя надо бы, конечно, разобраться до конца - почему сохраняется эта прерывистость... Добавлено через 11 минут Хотя вот что любопытно... вывод звука сразу в потоке, и запись текста в файл - сами по себе разные операции и не связаны друг с другом. Но то, что было записано в файл и воспроизведено - полностью соответствует тому что было проиграно в реальном времени. Это наводит на мысль: возможно, надо как-то поработать с приходящими данными от модема? Либо надо копать под той библиотекой которая воспроизводит звук...
0
|
||
|
|
||
| 14.04.2016, 14:00 | ||
|
1
|
||
|
|
||||||
| 14.04.2016, 14:17 [ТС] | ||||||
|
Storm23, но ведь символ (байт 230) будет записан и может быть прочитан в дальнейшем как "байт 230"? Текстовый файл - это так, просто для записи данных которые потом я бы преобразовал в аудио-поток. То, что символ не будет отображён - неважно для данной ситуации. Просто для индикации того, что что-то записано и это что-то имеет такой-то объём.
В общем и целом я разобрался. Сейчас даже почти разобрался в том как строится WAVE файл с его заголовками. Одна мелочь лишь непонятна, но это не критично в общем и целом. Спасибо вам за помощь! В конечном итоге удалось записать голос в файл таким способом:
0
|
||||||
|
|
||
| 14.04.2016, 14:46 | ||
|
Вот ваш файл: Вас не смущает что в этом файле половина символов - знаки вопроса, с кодом 3F? А также обратите внимание на то, что там вообще нет байт больше 127. И это не то как он отображается, это реальное его содержимое. А почему? Потому что вы писали бинарные данные в тексте с кодировкой ASCII.
1
|
||
|
0 / 0 / 0
Регистрация: 15.09.2015
Сообщений: 2
|
|
| 29.06.2016, 12:43 | |
|
Привет. Прочел , твои записи и решил задать вопрос. Не совсем по теме, но... Мучаюсь со своим E173 ни как не могу получить голосовой поток на порт Application Interface. Команда AT^DDSETEX=2 проходит, модем реагирует, а потока нет. Родная звонилка HUAWEI работает нормально. Сравнивал данные полученные со снифера - видимо дело в таймингах. Скажи пожалуйста, как ты решил подобное (если было конечно)?
0
|
|
|
|
||||||
| 30.06.2016, 19:05 [ТС] | ||||||
|
serg009, подпишись на событие PortVoiceRecieced для порта Application Interface. Далее, установи связь (позвони с модема и сними трубку или прими звонок на модеме) соответствующей командой на командный порт (название порта связано с "UI Interface"). Теперь лишь (когда связь установлена) вводи в тот же командный порт команду AT^DDSETEX=2, после этого сразу же должно само вызываться событие PortVoiceRecieced примерно раз в 20-25 миллисекунд. Здесь тайминги не нужны, событие будет срабатывать автоматически, т.к. модем получает данные непрерывно с этим маленьким периодом, тайминг нужен для передачи голосовых данных и то в принципе можно и без них обойтись. Сам процесс получения данных в событии примерно такой:
Добавлено через 6 минут Схема общая такая: у тебя должно быть 2 подключения к 2-м портам (интерфейсам). Порт командный и порт "интерфейса". На командный ты передаёшь все управляющие команды и там же получаешь ответы. На другом ты получаешь только звуковые данные и передавать надо на него же твои голосовые данные. Но передача работает только если вышеупомянутая команда была введена после установления связи.
1
|
||||||
|
0 / 0 / 0
Регистрация: 15.09.2015
Сообщений: 2
|
|
| 02.07.2016, 13:54 | |
|
Урра! Заработала железяка! Что там в потоке идет - вопрос десятый. Разберусь. Тем более, что есть такой "мануал" от тебя и Storm23
Спасибо огромное! "Как я сам не дотумкал, как я сам не дотумкал!" (с)
0
|
|
| 02.07.2016, 13:54 | |
|
Помогаю со студенческими работами здесь
12
Обработка звука обработка звука Обработка звука Обработка звука. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|