Skip to content

Latest commit

 

History

History
119 lines (83 loc) · 4.82 KB

README.md

File metadata and controls

119 lines (83 loc) · 4.82 KB

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