All Projects → Krupnikas → Octave

Krupnikas / Octave

Musical data transmission

Projects that are alternatives of or similar to Octave

Lipreading
Stars: ✭ 49 (-2%)
Mutual labels:  jupyter-notebook
Mlapp Solutions
Solutions in Python for Kevin Murphy's Machine Learning: a Probabilistic Perspective
Stars: ✭ 49 (-2%)
Mutual labels:  jupyter-notebook
Wsdm Adhoc Document Retrieval
This is our solution for WSDM - DiggSci 2020. We implemented a simple yet robust search pipeline which ranked 2nd in the validation set and 4th in the test set. We won the gold prize at innovation track and bronze prize at dataset track.
Stars: ✭ 50 (+0%)
Mutual labels:  jupyter-notebook
Universodiscreto
Códigos explicados nos vídeos do canal Universo Discreto (YouTube)
Stars: ✭ 49 (-2%)
Mutual labels:  jupyter-notebook
Teal deer
Teal deer (from TL;DR) helps you get the gist of all the stuff you need to read, so you don't have to read it all at once.
Stars: ✭ 49 (-2%)
Mutual labels:  jupyter-notebook
Feature Engineering Book
Code repo for the book "Feature Engineering for Machine Learning," by Alice Zheng and Amanda Casari, O'Reilly 2018
Stars: ✭ 1,052 (+2004%)
Mutual labels:  jupyter-notebook
Eeg Classification Using Recurrent Neural Network
Used LSTM Network to classify eeg signals based on stimuli the subject recieved (visual or audio)
Stars: ✭ 49 (-2%)
Mutual labels:  jupyter-notebook
Presentations
Talks & Workshops by the CODAIT team
Stars: ✭ 50 (+0%)
Mutual labels:  jupyter-notebook
Pure Numpy Feedfowardnn
Simple feedforward neural network class written in pure python+numpy
Stars: ✭ 49 (-2%)
Mutual labels:  jupyter-notebook
Live Video Analytics
A collection of reference applications using live video analytics capabilities in Azure Media Services
Stars: ✭ 50 (+0%)
Mutual labels:  jupyter-notebook
Spotifyml
Stars: ✭ 49 (-2%)
Mutual labels:  jupyter-notebook
Randomized Svd
demos for PyBay talk: Using Randomness to make code faster
Stars: ✭ 49 (-2%)
Mutual labels:  jupyter-notebook
Winter 2016 Cs231n
Assignments: CNN for Visual Recognition.
Stars: ✭ 49 (-2%)
Mutual labels:  jupyter-notebook
Spark Tutorials
Code and Notebooks for Spark Tutorials for Learning Journal @ Youtube
Stars: ✭ 49 (-2%)
Mutual labels:  jupyter-notebook
Vapoursynthcolab
AI Video Processing/Upscaling With VapourSynth in Google Colab
Stars: ✭ 47 (-6%)
Mutual labels:  jupyter-notebook
Do Zero Ao Ml
Stars: ✭ 49 (-2%)
Mutual labels:  jupyter-notebook
Tensorflow From Zero To One
TensorFlow 最佳学习资源大全(含课程、书籍、博客、公开课等内容)
Stars: ✭ 1,052 (+2004%)
Mutual labels:  jupyter-notebook
Teaching Ml In Production
Stars: ✭ 50 (+0%)
Mutual labels:  jupyter-notebook
Probandstats Pydatanyc2019
Introduction to Probability and Statistics
Stars: ✭ 50 (+0%)
Mutual labels:  jupyter-notebook
My Projects
It's my projects
Stars: ✭ 50 (+0%)
Mutual labels:  jupyter-notebook

Octave - Музыкальная передача данных

Это проект, на который меня вдохновила уязвимость в «Яндекс.Станции».

Я написал про него на Хабре:

Реверс инжиниринг протокола активации Яндекс.Станции

Как уязвимость в Яндекс.Станции вдохновила меня на проект: Музыкальная передача данных

И на vc.ru:

Уязвимость в «Яндекс.Станции» вдохновила меня сделать сервис для музыкальной передачи данных

В репозитории можно найти файлы на Python в папке research и продолжить эксперименты. Также тут хранятся фалы для web-демки доступной по адресу octave.skrup.ru - при желании можно выбрать другие ноты для передачи данных и, так сказать, поменять жанр. Затем развернуть на своем сервере.

Кратко перескажу статьи здесь.

С чего все началось?

Друзья подарили мне «Яндекс.Станцию». Для её активации нужно было поднести телефон и проиграть звук из приложения «Яндекс».

Preview

Я создал точку доступа Wi-Fi с паролем «012345678» и записал получившийся сигнал. Затем посмотрел на спектрограмму и понял, как устроен сигнал и где лежит пароль от WiFi.

Данные для Станции кодируются символами по 4 бита. По сути кодируется hex строка, где каждому значению 0 — F соответствует своя частота от 1 кГц до 4,6 кГц с шагом в 240 Гц. Пароль не шифруется и передаётся в открытом виде.

Я размышлял, зачем нужно было делать активацию так, а не через Bluetooth, как, например, у китайских пылесосов-роботов, и пришёл к выводу, что в этом случае эффектность важна больше, чем безопасность или скорость.

Действительно! Ведь протокол связи — всегда компромисс между дальностью, скоростью и надёжностью. А что, если все эти характеристики отойдут на второй план, а определяющим станет фактор впечатления для пользователя? Я решил сделать протокол, в котором для модуляции будут использоваться частоты нот.

Как сделал

Мне понравилась простая, как молоток, идея разработчиков «Яндекса» — выбрать 16 частот: по одной для каждого hex-символа. А ещё у меня остались наработки от реверс-инжиниринга, поэтому я решил развить эту идею, а не придумывать всё с нуля.

Глубоко в технику вдаваться не будем: подробнее о разработке я написал в другой статье на «Хабре». А сейчас расскажу в двух словах.

Я избавился от щелчков в сигнале «Яндекс.Станции» и выбрал новые частоты для передачи: 16 нот, начиная с До первой октавы. Вот так: Ноты

Если использовать более высокие ноты, то становится менее комфортно ушам. А более низкие ноты хуже передаются из-за особенностей динамиков и микрофонов.

Получилась своего рода музыкально-частотная модуляция. Назовём её «круп-модуляция» :)

Как звучит?

Чтобы можно было попробовать прямо в браузере, я переписал передатчик с круп-модуляцией с Python на JavaScript и сделал простенький интерфейс.

Пользуясь случаем, хочу передать привет:

Кириллические символы и даже эмодзи тоже работают. Но посылки с ними получаются длиннее и менее мелодичными из-за особенностей кодировки.

Можете попробовать любые фразы тут

Как принимается?

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

Я сделал прототип приёмника в качестве proof of concept. Вот как он работает:

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

Как думаете, какие варианты практического применения и коммерциализации могут быть у музыкальной передачи данных?

Подводя итог

Это был интересный проект на пару вечеров с достаточно эффектным результатом. Такую передачу данных можно использовать, например, как «звуковой QR-code» — расшарить аккаунт с телефона на сайт и прочее.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].