Hi. Jestem jedną z tych osób z ASP, które były w HS dwa tygodnie temu. Mam dosyć spory pomysł na projekt, i potrzebowałabym trochę pomocy przy nim, zarówno szprętowo (potrzebuję postawić serwer webowy i internetowy audio stream) jak i wiedzowo (nie wiem jaki tech stack tu wykorzystać, są też inne problemy do rozwiązania)
Mój projekt: Kalamarama (nazwa robocza)
Gra webowa a là MMO, której właściwie jedynym outputem jest stream audio. Gracze mogą czatować ze sobą za pomocą systemu “easy chat” - wybieranie fraz albo słów z nested dropdown menu. Wiadomości są czytane przez TTS.
jest limit słów i fraz w jednej wiadomości
można ustawić sobie nick, max 12 znaków. Ale nie ma weryfikacji ani kont
Można “zaglądać” do gry z dowolnego oprogramowania które może odtwarzać streamy audio (np. VLC) ale żeby brać w niej udział trzeba wejść na stronę internetową
jest kilka “pokoi”. Każdy pokój ma własne:
stronę internetową
stream audio
dostępne frazy i słowa
BGM / SFX / ambience, które gra kiedy nie ma wiadomości do odczytania
pomysły na pokoje:
pokój główny (“Town Square”?)
ogólne słowa i frazy do komunikacji
pokój efektów dźwiękowych (“Meow Mansion”?)
zamiast TTS, każde słowo/fraza odpowiada efektowi dźwiękowemu
Dozwolone tylko słowa z tego języka (jest ich ok. 137)
Potencjalne problemy
wymyślenie tech stacka
hostowanie tego przez dłuższy czas (na razie myślę żeby na kilka dni odpalić to jak już będzie gotowe, ale fajnie by było dłużej)
brak authu graczy (wolałabym żeby to było bez kont itp…)
botowanie / mass submitting
Projekt chcę rozwijać i udostępnić pod wolną licensją, jeszcze nie wiem jaką.
Będę tu pisać jak jeszcze coś przyjdzie mi do głowy, ale na razie właśnie mam dwa główne pytania: jaki tech stack tu możnaby użyć? i czy mogłabym takie coś postawić w hackerspace?
Ja bym to próbował zrobić w oparciu o owncast.
Najczęściej jest używany do streamowania video ale internetowe radia też są na tym robione.
Najważniejsze, że:
ma wbudowany chat serwer, który nie wymaga autoryzacji ale może ją mieć (w oparciu o konto fedi albo indieauth)
TTS który można wykorzytać, dobrej jakości, lokalny, oparty na modelu ML, z polskimi głosami to np piper (próbki głosów) .
Wszystko w/w nie wymaga jakiegoś mega hardware’u i na początek wszystko można upchać na raspberry pi albo na jakimś demobilowym terminalu (aka kektop).
Muszę kiedyś siąść i nauczyć się tego systemu pisania, haha.
Co do owncasta - zależy mi żeby to był stream audio. I myślę że to jest zbyt robust software na to co chcę zrobić… Myślałam bardziej o icecast, albo czymś podobnym
Wyobrażam to sobie tak, że przez POST jest wysyłany string z nickiem i określonej wielkości array zawierający wartości identyfikujące poszczególne frazy (0 = brak), w jakiś sposób to jest wysyłane do lokalnego skryptu na serwerze który handluje queue wiadomości. I ten skrypt po prostu odtwarza odpowiednie audio w streamie. Pewnie coś z miksowaniem i routowaniem audio trzeba by było zrobić żeby było kilka streamów…
Można pomyśleć o wygenerowaniu fraz wybieranych z menu wcześniej, żeby później nie musieć tego robić w kółko (minus - będzie to pewnie gorzej brzmiało, bo dobry TTS będzie w stanie płynnie przechodzić od słowa do słowa, ale oszczędności na pewno będą)
Osobiście zrobiłbym kolejkowanie wiadomości zamiast miksowania. Tak, żeby jedno odtwarzało się po drugim, a nie nachodziło na siebie.
W pierwszej wersji nie przejmowałbym się “kilkoma strumieniami”. Icecast zdaje się wspierać niezależne strumienie (“mountpoints”), więc można to pewnie dorobić później.
Full disclosure: nie pracowałem z icecast, więc to są rozważania czysto teoretyczne.
W sumie obydwa w/w serwery (owncast i icecast) mogą streamować zarówno audio jak i video. Wszystko zależy co wrzucimy w stream. Może być samo audio.
W owncast taki custom stream (czyli nie z gotowego katalogu plików tylko tworzony dynamicznie) też można zbudowac przy użyciu ffmpeg: ffmpeg - Owncast .
Główna różnica wydaje się w tym icecast to jest bardzo proste narzędzie - wystawia stronę z listą aktualnie aktywnych strumieni i to wszystko. Taki klocek z którego coś można dopiero zbudować. Np widzę że wszędzie gdzie jakieś przyklady są to jest to sklejane czymś takim jak https://www.liquidsoap.info - który automatyzuje rózne rzeczy typu miksowanie strumieni, kolejkowanie itp.
Mam roboczo listy słów i fraz, chciałabym jakoś automatycznie wygenerować z tego pliki audio zawierające text-to-speech.
Same festival działa na moim laptopie, ale text2wave nie - za każdym razem wywala segfaulta z jakiegoś powodu. Szukałam i coś przeczytałam że z tym skryptem są problemy na Arch Linuxie, może dlatego, nie wiem.
Też nie wiem jak obejść że text przekazywany do text2wave MUSI być w formie pliku… Chcę wygenerować dla każdej linii tekstu osobny plik.
Wolałabym zostać przy festivalu, bo tego używa też liquidsoap i parę rzeczy będzie dynamicznie generowane. :T