Giter Club home page Giter Club logo

alice_suno's Introduction

Alice Suno

Навык Яндекс Алисы для взаимодействия с сервисом генерации музыки Suno.
С помощью навыка можно попросить Алису придумать песню, которую она затем воспроизведет на умной калонке.

IMAGE ALT TEXT

Алгоритм работы

alorithm

Подготовка

Нам понадобятся:

  • Сервер, привязанный к домену с действующим SSL-сертификатом. Самоподписанный сертификат не подойдет.
  • Сервер в одной локальной сети с умной колонкой
    Поскольку на ответ от навыка отводится ограниченное время, а композиция генерируется достаточно долго, возникает необходимость в возможности по завершении генерации запросить у Алисы воспроизведение трека, загруженного в ресурсы навыка. Это можно сделать из локальной сети, используя расширение к Node-Red под названием node-red-contrib-yandex-station-management. Данное расширение позволяет выполнять команды на колонке из локальной сети, произносить фразы и многое другое. Также имеется возможность воспроизведения звука, сохраненного в ресурсах навыка.
  • MQTT сервер, который будет доступен как из локальной сети, так и с сервера с навыком. Он понадобаиться нам для того чтобы сообщить серверу в локальной сети что композиция сгенерирована и успешно загружена в ресурсы навыка.
  • Создать новый диалог тут. Про создание диалогов можно почитать тут тут, тут, тут

Установка

git clone https://github.com/guinmoon/alice_suno.git 
cd alice_suno 
pip install -r reuirements.txt 

Конфигурация

  1. Настроить сервер взаимодействия с навыком
    Пример конфигурации Nginx, для создания end-point взаимодействия с навыком, используется сертификат letsencrypt
server {
    server_name mydomain.ru;

    location /alice-suno/ {
      proxy_pass http://localhost:8080/;
      proxy_set_header Host $http_host;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection upgrade;
      proxy_set_header Accept-Encoding gzip;
    }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/mydomain.ru/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/mydomain.ru/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
    if ($host = mydomain.ru) {
        return 301 https://$host$request_uri;
    } # managed by Certbot
    listen 80;
    listen [::]:80;
    server_name mydomain.ru;
    return 404; # managed by Certbot
}

В настройках навыка в качестве endpoint указываем:

https://mydomain.ru/alice-suno/ 
  1. Скопировать файл config_sample.py в config.py и указать свои параметры
  2. Авторизоваться в Suno и получить Cookie cookie

Запуск

python3 alice_suno.py

Если все правильно то в консоли тестирования навыка при открытии вкладки отладка вы должны увидеть "Привет я Суно"
Если вы отправите любой текст навык должен ответить "Придумываю песню"
После создания трека он должен появиться в директории output, а в MQTT топике suno должна появиться комманда для его воспроизведения

Конфигурация клиента в локальной сети

Нам понадобиться:

Установка:

  1. Импортируйте файл alice_suno.json в node-red и настройте компонент взаимодействия с умной колонкой
  2. Проверьте работоспособность отправив любую фразу, убедитесь что Алиса ее произнесла
  3. Настройте MQTT узел на ваш сервер

cookie

Все готово, можно просить Алису придумать песню.

# Пример вывода при правильной работе 

======== Running on http://localhost:8080 ========
(Press CTRL+C to quit)
в стиле хип хоп про блок хабра хабр
5
Waiting for results...
...
['https://audiopipe.suno.ai/?item_id=7375d33b-fc76-4945-8f4f-7bf57a6b8ee2', 'https://audiopipe.suno.ai/?item_id=a3d139a4-e666-4a2c-98e5-168e574ebcb3']
Downloading song... 7375d33b-fc76-4945-8f4f-7bf57a6b8ee2
Send `<speaker audio="dialogs-upload/37cbad04-a60e-4a9b-833b-1e47352e5cf5/f9c6753d-cf34-4479-a15a-50e0de651ea4.opus">` to topic `suno`
UploadedSound(_raw_kwargs={}, id='f9c6753d-cf34-4479-a15a-50e0de651ea4', originalName='suno_7375d33b-fc76-4945-8f4f-7bf57a6b8ee2.mp3', skillId='37cbad04-a60e-4a9b-833b-1e47352e5cf5', size=None, createdAt='2024-05-20T15:23:35.422Z', isProcessed=False, error=None)

Благодарость

В ходе разработки использованы следующие репозитории:

aioalice от mahenzon
SunoSongsCreator от yihong0618

alice_suno's People

Contributors

guinmoon avatar

Stargazers

krdprog avatar Andrey Pavlov avatar  avatar MadMike avatar Yan Anisimov avatar

Watchers

 avatar

alice_suno's Issues

Response status 403 with description 'Forbidden (no credentials)'

При попытке воспроизвести песню появляется ошибка:

Response status 403 with description 'Forbidden (no credentials)'
Oops! Error uploading sound by bytes Forbidden (no credentials)

Хотя приведенный OAuth токен и SKILL_Id верные

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.