Skip to content

n4mespace/MusicGenerationWebService

Repository files navigation

MusicGenerationWebService

Build Status

Software Engineering Term Paper

Зміст

  1. Вступ
  2. Технічне завдання
  3. Проектування
  4. Розробка
  5. Тестування
  6. Використання
  7. Висновки

1. Вступ

1.1 Ціль проєкту

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

1.2 Реалізація

Для вебсервісу використовувалися такі фреймворки:

  1. Серверна частина (python3):
  1. Клієнтська частина (js):
  1. Нейронна мережа (python3):

2. Технічне завдання

2.1 Загальне завдання

Розробити вебсервіс, на якому користувач може слухати згенеровану нейронною мережею музику.

2.2 Функціональність

  • кілька жанрів музики на вибір.
  • можливість отримання згенерованої музики сторонніми сервісами через REST API:
  1. GET api/generate
  2. POST api/generate

Ендпоінт приймає такі параметри:

  • temperature -- чим більше temperature, тим більш різноманітний результат
  • top_k -- вибрати краций результат з top_k разів
  • include_prefix -- чи включити у результат сам префікс
  • prefix -- початкова точка генерації

2.3 Документація

  • JsDoc
>> cd client
>> npm run docs
  • PythonDoc
>> cd docs/PythonDoc
>> make html
>> sphinx-build -b rinoh source _build/rinoh

3. Проектування

Проєктування графічного інтерфейсу користувача

Веб-сервіс побудований як SPA, зразок головної сторінки

SPA Example page

4. Розробка

TODO:

  • // що залишилося реалізувати

5. Тестування

За допомогою бібліотеки pytest та pytest-asyncio запускаємо тести командою:

>> pytest tests.py

Також автоматично тестування запускається після кожного коміту за допомогою інтеграції з Travis-ci

6. Використання

Успішно розгорнути проект можна:

  1. За допомогою poetry та nvm:
>> git clone https://github.com/n4mespace/MusicGenerationWebService
>> pip3 install poetry
>> cd server && poetry install && cd ../
>> nvm install v12.6
>> cd client && npm install && cd ../
>> chmod +x dev.sh
>> ./dev.sh
  1. За допомогою Docker:
>> git clone https://github.com/n4mespace/MusicGenerationWebService
>> DOCKER_BUILDKIT=1 docker build -t mgws:latest .

та після білда запустити командою:

>> docker run --name mgws -it -p 8000:8000 --rm mgws:latest -e WORKER_NUM=1

7. Висновки

За допомогою розробки цього проекту покращив не тільки теоретичні знання в сфері програмування на python3 та js, але й набув нових навичок у використанні різних бібліотек для побудови веб-сервісу, також поглибив знання у сфері NLP