The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

NoiseTorch, приложение для подавления шумов микрофона

24.07.2020 12:12

Перешло на стадию бета-тестирования приложение NoiseTorch, предоставляющее интерфейс для подавления шумов микрофона в режиме реального времени. Программа снабжена графическим интерфейсом для настройки параметров и использует PulseAudio для перенаправления звуковых потоков. Для включения подавления шума в любом звуковом приложении достаточно выбрать виртуальный микрофон NoiseTorch в списке устройств ввода звука. Код написан на языке Go и распространяется под лицензией GPLv3. Для подавления шума применяется рекуррентная нейронная сеть RNNoise, развиваемая сообществами Mozilla и Xiph.Org, а для интеграции с PusleAudio задействован плагин noise-suppression-for-voice. Графический интерфейс построен с использованием фреймворка Nucular.



  1. Главная ссылка к новости (https://github.com/lawl/NoiseT...)
  2. OpenNews: Доступен мультимедийный сервер PipeWire 0.3, идущий на смену PulseAudio
  3. OpenNews: Выпуск звукового сервера PulseAudio 13.0
  4. OpenNews: Техника определения RSA-ключей через анализ изменения шума от компьютера
  5. OpenNews: Техника восстановления ключей шифрования через анализ шумов в сигнале от беспроводных чипов
  6. OpenNews: Компания Intel опубликовала библиотеку для шумоподавления и фильтрации изображений
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/53424-noisetorch
Ключевые слова: noisetorch, rnnoise, microphone, ai
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (82) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, ютуб ютубов (?), 12:17, 24/07/2020 Скрыто модератором [﹢﹢﹢] [ · · · ]
  • –12 +/
     
     
  • 2.7, ютуб ютубов (?), 12:38, 24/07/2020 Скрыто модератором
  • –6 +/
     
     
  • 3.23, Аноним (23), 13:56, 24/07/2020 Скрыто модератором
  • +5 +/
     
     
  • 4.27, ютуб ютубов (?), 14:03, 24/07/2020 Скрыто модератором
  • –5 +/
     
     
  • 5.80, Аноним (80), 23:15, 27/07/2020 Скрыто модератором
  • +/
     
     
  • 6.82, ютуб ютубов (?), 12:54, 29/07/2020 Скрыто модератором
  • +/
     
  • 3.26, Админ (?), 14:03, 24/07/2020 Скрыто модератором
  • +1 +/
     
     
  • 4.28, ютуб ютубов (?), 14:05, 24/07/2020 Скрыто модератором
  • +/
     
  • 2.19, jurikolo (?), 13:29, 24/07/2020 Скрыто модератором
  • +/
     
  • 2.24, Аноним (24), 13:56, 24/07/2020 Скрыто модератором
  • –1 +/
     

     ....ответы скрыты модератором (9)

  • 1.2, Аноним (-), 12:17, 24/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    >и использует PulseAudio

    уносите

     
     
  • 2.4, Аноним (4), 12:20, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я вот тоже не понял, зачем это нужно -- куда удобней было бы в виде ladspa плагина.
     
     
  • 3.9, Stanislavvv (?), 12:41, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Для LADSPA в том числе - репа, которая подключается в обуждаемом приложении: https://github.com/werman/noise-suppression-for-voice
    Она, кстати, не на Go, так что, как я понимаю, тут только интерфейс к той библиотеке на сях и его можно было написать на чём угодно.
    Интересно, оригинальную софтину в микроконтроллер типа STM32F1 (ну или F4) запихнуть можно без внешней памяти?
     
     
  • 4.40, Аноним (40), 16:35, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    >в микроконтроллер типа STM32F1

    Пухловатые бинарнички Go порождает, в 64 - 128 K не влезет.

     
  • 4.42, Аноним (42), 17:25, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >F1

    Нельзя, в коде плавучка.

     
  • 4.53, АнонимусШифропанк (?), 20:06, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    На F3 и может быть некоторые F4 - вполне вероятно. F3 это по-большому счёту линейка для работы с аналоговыми сигналами.
     
  • 3.31, arthi747 (ok), 14:48, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В пульсе, как ни странно, давно есть свой шумодав. Его просто включить нужно. На арчевики давно все написано. Даже неплохо работает. Получше чем в винде. Та своим шумодавом кроме прямой задачи еще и до опупения пожимает звук так что слушать невозможно. Странно что к пульсе нужно было придумывать приблуду со стороны вместо того чтобы взять то что уже в нем есть и дорисовать гуй.
     
  • 2.6, mikhailnov (ok), 12:34, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    К ALSA прикрутите?
     
  • 2.15, Tronis (?), 13:04, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Некогда проблем с PulseAudio не было.
     
     
  • 3.17, Tronis (?), 13:06, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Никогда*
     
  • 3.20, Аноним (20), 13:29, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    либо слишком молод, либо не пользуешься
     
     
  • 4.30, Корец (?), 14:19, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Либо слишком толсто.
     
  • 2.33, Аноним (33), 15:26, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Если не можешь форкнуть под свои нужды, значит уносить надо тебя.
     

  • 1.3, Аноним (4), 12:17, 24/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Эх, как же раньше денойзеры работали без всяких нейронок. Жаль только они всё больше проприетарные. А как у сабжа с качеством, такое же кошмарное, как и у остальных нейронок?
     
     
  • 2.12, Аноним (12), 12:47, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Как-как, говняно.

    Это как с фейсрекогнишеном, когда в адовом цикле сканировалась фотки миллион раз в поске маркеров - а теперь одну большую матрицу перемножили и вот тебе и лицо, и характеристика муж-жен и т.д.

     
  • 2.32, Аноним (33), 15:24, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Интересно, сколько миллионов лет должно пройти, чтобы хомячье эволюционировало хотя бы до уровня практического сравнения. Открываем глаза, берем тот же блендер и смотрим на убогий результат денойзера без нейронок, а потом на результат денойзера optix, берем любую игру с поддержкой dlss и сравниваем просто растянутую картинку с замыленными пикселями и картинку с dlss, чистим уши, а потом берем rtx voice и сравниваем с любым классическим звуковым шумодавом. Во всех случаях нейронки дадут в разы лучший результат. В любой области, где входные данные схожи, но не идентичны классические алгоритмы будут проигрывать простейшим нейронкам с огромным отрывом.
     
     
  • 3.35, Аноним (4), 15:33, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Деревянные денойзеры/апскайлеры хотя бы не вносят искажений, которых там до них не было. Какие у вас классические шумодавы? В опенсорсе никогда не было совершенно ни одного приличного, а вот в коммерческом софте они просто волшебные.
     
     
  • 4.37, Аноним (33), 15:46, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >хотя бы не вносят искажений, которых там до них не было

    Вносят стабильные искажения излишним мылом с шарпом на все подряд, зато не ошибаются в одном на сотню кадре! Вот это достижение.

    >вот в коммерческом софте они просто волшебные

    Ага, конечно, во влажных мечтах хомячья разве что. Открой свое "волшебное" и сравни с нейронками нвидии, либо другой "коммерческой" нейронкой, ибо даже коммерческие алгоритмы будут "просто волшебно" сосать.

     
  • 4.45, Аноним (45), 17:46, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > в коммерческом софте они просто волшебные

    Ага, помню как от звуковых дорожек, обработанных шумодавом Аудишена (по образцу) плевался.
    Кстати, в кассетной НОТе был модуль шумодава пороговый, довольно эффективный. Что-то похожее сейчас применяют при реставрации старых фильмов. ВЧ повышается с ростом сигнала.

     
     
  • 5.52, Аноним (4), 19:35, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Аудишон кстати того, этого, не лучший образец, в общем.
     
  • 4.71, Аноним (-), 18:15, 25/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    noise-repellent (см. GitHub) не пробовали? Не один год уже существует. Кстати, автор обещает возобновить разработку, там немало классных предложений накопилось. А проприетарь уже лет пять как вообще не нужна (если это не AutoCAD, конечно).
     
  • 4.73, Аноним (-), 18:18, 25/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Кстати, про апскейлеры: недавно китайцы поразили всех новым алгоритмом (нейронным): https://github.com/nihui/realsr-ncnn-vulkan. В случае качественной исходной картинки результат реально похож на чудо. Да, и TensorFlow с Кудой не нужны, работает на Вулкане!
     

  • 1.5, Аноним (5), 12:29, 24/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    >Код написан на языке Go

    А надо было на Nim.

     
     
  • 2.8, Аноним (8), 12:40, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Почему не Dlang?
     
     
  • 3.11, Аноним (40), 12:44, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ещё лучше. Синтаксис привычнее.
     
  • 2.18, gavr (ok), 13:09, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А почему не Vala ^^
     
     
  • 3.22, Аноним (40), 13:44, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А где вообще Vala полезен, кроме как оборачивать псевдообъектное GTK?
     
  • 2.61, Аноним (61), 00:35, 25/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    на расте такое невозможно?
     
     
  • 3.69, Аноним (5), 10:56, 25/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Жирные бинарники, фи.
     

  • 1.10, Аноним (40), 12:42, 24/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –13 +/
    >Программа ... использует PulseAudio

    -100500 автору за это.

     
     
  • 2.13, Аноним (13), 12:49, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +11 +/
    Автор хотел, чтобы это работало на 99% дистрибутивов, устанавливающих пульсаудио по умолчанию, в 99% программ, настроенных на пульсаудио по умолчанию. Мнение 1% религиозных фанатиков не учли, извините.
     
     
  • 3.21, Аноним (40), 13:42, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Рекомендуется сдувать щёки.
     
     
  • 4.36, Аноним (33), 15:38, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Рекомендуется не ныть, когда какая-то никому не нужная хрень не поддерживается разработчиками, которые работают за спасибо, ограничены в ресурсах и времени. Либо трать свое время и форкай, либо плати программисту, который форкнет за тебя, либо не ной и пользуйся тем, что у тебя есть, либо пользуйся тем, чем пользуются все остальные.
     
     
  • 5.38, Аноним (40), 16:20, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Так мне эта ненужная хрень и не нужна.
     
     
  • 6.60, Аноним (33), 23:48, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну так что ты в трэде тогда забыл? Ты тут не нужен ровно в той же степени.
     
  • 5.47, Аноним (45), 17:50, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Рекомендуется не ныть

    Iron_Bug ныла. И pulse ей не нравится, и python. Я посоветовал спаять самому хардварно.
    Правда, речь шла о компрессоре против скримеров. Ирония в том, что в некоторых виндовых дровах есть встроенные лимитеры, то есть даже делать ничего не надо виндузятникам.

     
     
  • 6.76, Аноним (76), 00:14, 27/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > И pulse ей не нравится, и python

    Она уже и от мыши избавилась. Не говоря уже о DE.

     
  • 3.41, Аноним (40), 16:36, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Я - атеист.
     
     
  • 4.58, prokoudine (ok), 22:42, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Атеизм -- тоже вера.
     
     
  • 5.66, Аноним (66), 04:32, 25/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Верно, поэтому разумно быть агностиком, с уклоном в атеизм В самом деле, мы не ... большой текст свёрнут, показать
     
     
  • 6.67, Аноним (66), 05:10, 25/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Например, вы задумывались, почему 1 В описании сотворения мира указывались звез... большой текст свёрнут, показать
     
     
  • 7.75, Бог (?), 14:19, 26/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Агностицизм не далеко ушел от собратьев. Во всех трех случаях пресловутый Васян исходит из того, что у слова Бог якобы есть определенное значение. Но проблема не в том что мы можем сопоставить реальность с определением, выяснив таким образом истину, а в том что мы пытаемся описать её словом в которое не заложен смысл. В слове Бог смысла меньше чем в мычании коровы или кудахтанье курицы. Сказать что Бога нет, это вовсе не то же самое что сказать, что нет например "вилки", по тому что у слова "вилка" есть определение, а у слова "Бог" его нет. Говорить что Бога нет, это такой же бред как говорить то что он есть.
    Забавно что ни ура-атеисты ни "просвещенные" агностики не видят этой дырени в их философии.
     
     
  • 8.77, Аноним (76), 00:16, 27/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    бог то что понимают под ним верующие сверхъестественное могущественное существо ... текст свёрнут, показать
     
  • 8.79, Kuromi (ok), 05:45, 27/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    То о чем вы говорите, вернее ваа позиция, называется игностицизм - отрицание сам... текст свёрнут, показать
     
  • 3.55, Crazy Alex (ok), 21:20, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Пульс работает поверх альсы. Альса.умеет плагины, и в этом плане всё прекрасно.

    Правильный ответ - чтобы можно было эту штуковину легко и просто врубать под приложение и под задачу, скорее всего. Это, в общем-то, единственное, в чём есть польза от пульсы

     

  • 1.14, m.makhno (ok), 12:50, 24/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Нейронка, Go и PulseAudio — прямо таки воплощение хипстерского мэйнстрима 😅
     
     
  • 2.16, Stanislavvv (?), 13:05, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Там нейронка - в библиотеке на сях, если что.
    Подозреваю, что это можно было на nodejs написать, было бы ещё хипстей :-)
     

  • 1.25, Аноним (23), 13:59, 24/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    С щелчками от мыши\механики справляется?
    Есть еще альтернативы? Из тех что видел убирают только постоянный шум.
     
     
  • 2.39, Аноним (40), 16:25, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    >Есть еще альтернативы?

    Навертеть на коленках с помощью пакета GNU Radio.

     

  • 1.29, Аноним (29), 14:08, 24/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    А для этого точно нужны нейросети?
     
     
  • 2.34, Аноним (33), 15:29, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Точно нужна нейронка для тупых комментариев на опеннете.
     

  • 1.43, luis2 (?), 17:29, 24/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А чем это программка будет отличаться от

    sudo nano /etc/pulse/default.pa
    load-module module-echo-cancel use_master_format=1 aec_method=webrtc aec_args="analog_gain_control=0 digital_gain_control=1" source_name=echoCancel_source sink_name=echoCancel_sink
    set-default-source echoCancel_source
    set-default-sink echoCancel_sink

     
     
  • 2.51, Имя (?), 18:47, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это NOISE cancellation, а не ECHO cancellation
     

  • 1.44, Аноним (45), 17:38, 24/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    О каком шуме речь? Сам микрофон шумит, но не сильно. Шумят усилители, пленка, окружающая среда. Наверное, речь о последней.
     
     
  • 2.48, benu (ok), 17:50, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Дешманский микрофон в аналоговом входе шумит очень сильно, по сравнению с микрофоном в USB гарнитуре.
     
     
  • 3.49, Аноним (66), 17:52, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Шумит усилитель звуковухи, а не микрофон.
     
     
  • 4.50, benu (ok), 17:59, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Убедил. Но я хотел сказать, что речь не про окружающий шум.
     
  • 4.59, prokoudine (ok), 22:43, 24/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Предусилитель, если уж быть совсем точным :)
     
     
  • 5.62, Аноним (66), 02:10, 25/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще, у микрофонного входа низкое входное сопротивление, а у линейного входа высокое. Можешь сделать свой предусилитель на 1-2 транзисторах и подключить к линейному входу. Если собрался подключать к микрофонному, он сильно просадит сигнал и все усиление пойдет насмарку. В этом случае нужно сделать эмиттерный повторитель на еще одном транзисторе. Надо выбирать малошумящие КТ3102 (лучше с префиксом Е) или КТ3107 (но тогда плюс будет на земле). Питать лучше от батареек.
     
     
  • 6.63, Аноним (66), 02:30, 25/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Вот как-то так, если совсем все включать http://www.imagebam.com/image/3f319a1350003383
    По питанию еще можно конденсатор + резистор поставить.
     
  • 6.64, Аноним (66), 02:58, 25/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Лучше использовать стереомикрофон. Вы не представляете какая это круть, когда запись со стереозвуком. Друг моего брата в детстве писал в таком режиме на магнитофон (мне случайно досталась кассета, потому что его отец принес чинить магнитолу моему отчиму) http://s000.tinyupload.com/index.php?file_id=85439216171325497429
    Кстати, был мой любимый тезка.
    А сейчас в основном пишут в моно.
     
     
  • 7.65, Аноним (66), 04:03, 25/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Того дедка уже нет и собаки его большой догини, которая слушалась команд. А Диня купил себе американскую ретро тачку.
     

  • 1.46, benu (ok), 17:49, 24/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    .
     
  • 1.54, Михайло (??), 20:43, 24/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А вот это нужно
     
  • 1.56, timur.davletshin (ok), 21:35, 24/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Это тот же алгоритм, что и уже использующийся алгоритм шумоподавления в Firefox?
     
  • 1.57, user90 (?), 21:51, 24/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > использует PulseAudio
    > Код написан на языке Go
    > применяется рекуррентная нейронная сеть

    Как-как вы это называете, "приложение"? Я бы выразился иначе.

     
  • 1.68, Аноним (68), 09:02, 25/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не одобряю. Называться должно не иначе как GoTorch!
     
     
  • 2.74, Аноним (-), 09:12, 26/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    >GoTorch!

    ИдиТорчок?

     

  • 1.70, Аноним (70), 15:41, 25/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > А как у сабжа с качеством, такое же кошмарное, как и у остальных нейронок?
    > Как-как, говняно.

    Я бы так не торопился хаять нейронки. Например, есть виндовый "RTX Voice" (который неизвестно зачем привязали к NVidia).
    Так вот, испытывали его с приятелем - отличное качество голоса и великолепная очистка от посторонних звуков.

    Эти нейронные шумодавы нынче растут, как грибы после дождя.
    Например, "Cadmus", но это тоже только оболочка для того же "RNNoise".

    И раз "RNNoise, насколько поял, как-то связан с Мозиллой, пора бы этой компании выпустить его плагин для Firefox. Или. может, уже выпустили??

    > В пульсе, как ни странно, давно есть свой шумодав. Его просто включить нужно.

    Вот как? А слона-то я и не заметил! :) Хорошо, и как же он включается?

     
  • 1.72, Аноним (72), 18:17, 25/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Протестировал, работает очень даже хорошо, намного лучше echo-cancellation из пульсы. Пропускает речь, клавиатуру и щелчки мышью приглушает, но не убирает полностью.
    Но есть пара моментов - вносит ощутимую задержку и часто проглатывает начало слова (видимо, пока нейронка сообразит, что пошла речь). То есть для условной контры не подойдёт, где надо как можно быстрее сообщить информацию товарищу по команде. А к какой-нибудь условной конференции на ноутбуке с говняным встроенным микрофоном очень даже подойдёт.
     
  • 1.78, Аноним (78), 00:18, 27/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А как с нагрузкой на ЦПУ?
    Много жрет ресурсов?
     
  • 1.81, ann (??), 17:15, 28/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Графический интерфейс построен с использованием фреймворка Nucular.

    Очередные вырвиглазные виджеты?

    Не осиливаете gtk/qt выкиньте пользовательский интерфейс и оставьте нормальный текстовый конфиг или параметры командной строки.

    Выглядит это вырвиглазно и не вписывается ни в gtk ни в qt окружение

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру