• Stars
    star
    587
  • Rank 76,145 (Top 2 %)
  • Language
    JavaScript
  • License
    GNU General Publi...
  • Created over 6 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Machine learning based speech synthesis Electron app, with voices from specific characters from video games

xVA Synth

xVASynth 2.0 is a machine learning based speech synthesis app, using voices from characters/voice sets from video games.

Patreon: https://www.patreon.com/xvasynth Steam: https://store.steampowered.com/app/1765720/xVASynth_v2

New: xVATrainer, for training your own custom voices: https://github.com/DanRuta/xva-trainer

See it in action (YouTube link)

xVASynth YouTube demo

This is an Electron UI wrapped around inference of FastPitch models trained on voice data from video games. The app serves as a framework, which loads and uses whichever models are given to it. As such, the app does nothing by itself, and models need to be installed. Models which have a corresponding asset file will be loaded in their respective game/category. Anything else gets loaded in the "Other" category.

The main benefit of this tool is allowing mod creators to generate new voice lines for third party game modifications (mods). There are other uses, such as creating machinima, and just generally having fun with familiar voices.

Join chat on Discord here: https://discord.gg/nv7c6E2TzV

Installation

Where possible, make sure you download the app from the Nexusmods websites (Files tab, "Main Files" section). There the compiled version will be the most up-to-date.

The base application can be downloaded and placed anywhere. Aim to install it onto an SSD, if you have the space, to reduce voice set loading time. To install voice sets, you can drop the files into the respective game directory: xVASynth/resources/app/models/<game>/

Instructions

Watch the above video for a summary of this section.

To start, download the latest release, double click the xVASynth.exe file, and make sure to click Allow, if Windows asks for permission to run the python server script (this is used internally). Alternatively, check out the Development section, to see how to run the non-packaged dev code.

Once the app is up and running, select the voice set category (the game) from the top left dropdown, then click a specific voice set.

A list of already synthesized audio files for that voice set, if any, is displayed. For synthesis, click the Load model button. This may take a minute, on a slow machine.

Once finished, type your text in the text area and click the Generate Voice button. Once generated, you will be shown a preview of the output. Click the Keep sample button to save to file, or click the Generate Voice after making ammends to the text input, to discard it and re-generate.

You can adjust the pitch, durations, and energy of individual letters by moving the letter sliders up and down, or by using the tools in the toolbars below.

In the list of audio files, you can preview, re-name, click to open the containing folder, or delete each one.

If the required CUDA dependencies are installed on your system, you can enable GPU inference by switching the toggle in the settings menu (click the setting cog at the top right).

Development

npm install dependencies, and run with npm start. Use virtualenv, and pip install -r requirements.txt using Python 3.6.

The app uses both JavaScript (Electron, UI) and Python code (FastPitch Model). As the python script needs to remain running alongside the app, and receive input, communication is done via an HTTP server, with the JavaScript code sending localhost requests, at port 8008. During development, the python source is used. In production, the compiled python is used.

Packaging

First, run the scripts in package.json to create the electron distributables. Second, use pyinstaller to compile the python. pip install pyinstaller and run pyinstaller -F server.spec. Discard the build folder, and move the server folder (in dist) into release-builds/xVASynth-win32-x64/resources/app, and rename it to cpython. Distribute the contents in xVASynth-win32-x64 and run app through xVASynth.exe.

Run the distributed app once and check the server.log file for any problems, remove any unnecessary files before distribution.

Make sure you remove your environment folder, if it is copied over to the distributed output.

Though, if you're just tweaking small things in JS/HTML/CSS, it may be easier to just edit/copy over the files into an existing packaged distributable. There's no code obfuscation or anything like that in place.

Models

A large number of models have been trained for this app. They are publicly hosted on the nexus.com website, on the game page respective to the game the voice belongs to.

Future Plans

Future plans are currently to continue training models for more voices, with plenty more remaining.

More Repositories

1

jsNet

Javascript/WebAssembly deep learning library for MLPs and convolutional neural networks
JavaScript
140
star
2

webassembly-webgl-shaders

Demo project for using WebGL shaders in WebAssembly
C
119
star
3

xva-trainer

UI app for training TTS/VC machine learning models for xVASynth, with several audio pre-processing tools, and dataset creation/management.
Python
90
star
4

GPGPU

Small library for running arbitrary computations on the GPU, using JavaScript or WebAssembly.
JavaScript
80
star
5

wasm-arrays

A couple of helper functions to make WebAssembly array parameters easy to use
JavaScript
40
star
6

webassembly-workflow

A WebAssembly shell project, set up with task runners, testing and CI+test coverage for both JS and C++
C++
38
star
7

IMGArrays

Compression algorithm for numerical lists. Output is encoded as an image, and usually beats gzip. Browser or Nodejs
JavaScript
32
star
8

WebSight

Aiding the visually impaired through real time augmented reality, AI object detection, WebGL shaders effects such as edge detection, and colour adjustments.
JavaScript
29
star
9

StyleSight

Browser based 'real-time' AR 'fast' neural style transfer using tensorflowjs
JavaScript
16
star
10

xvasynth-community-guide

Community guides and tips for xVASynth
14
star
11

NeAT

Resources for paper: "NeAT: Neural Artistic Tracing for Beautiful Style Transfer"
12
star
12

ROS-Challenges

ROS team robotics challenges
Makefile
5
star
13

ALADIN

ALADIN style representation model from the ALADIN/StyleBabel papers
Python
5
star
14

Stanford-Cars-Deep-Learning

Deep Learning experiments for the Stanford Cars dataset
Python
3
star
15

JS-Memory-Map

Library to visualize memory usage of a given JS object as a treemap, as it changes, to detect memory leaks.
JavaScript
2
star
16

iDB

Promises based SQL-like abstraction library for indexedDB using the builder design pattern.
JavaScript
2
star
17

cifar10

CIFAR-10 data set for nodejs / browser
JavaScript
2
star
18

Pytorch-cancer-model

Pytorch models trained on Matlab's cancer_dataset. Coursework.
Python
1
star
19

imageboard-scraper

A nodejs script to search for key words in thread original posts on an imageboard, and scrape posts/media
JavaScript
1
star
20

UTFSnow

Tiny, highly configurable library that snows down interactive UTF characters on your page
HTML
1
star
21

printv

printf for C++ vectors, for WebAssembly browser use
JavaScript
1
star
22

lifx-bias-lighting

Bias lighting script for Lifx bulbs
Python
1
star
23

python-swiprolog-interface

Python interface for SWI-Prolog, for terminal use
Python
1
star
24

next-clearance-scraper

A python script to periodically scrape Next's clearance store's items using selenium and email them to you.
Python
1
star
25

createElem

Tiny function to generate HTML elements/structures, along with their attributes, CSS and js events.
JavaScript
1
star
26

CMD-Chart

An animated, colourful, dependency-free histogram charting library for command line
JavaScript
1
star