Ebyroid is a node native addon for VOICEROID+
and VOICEROID2
supports.
It provides access from Node.js Javascript to VOICEROIDs through N-API and native codes, which is fast.
We also provide a standalone HTTP server as Win32 executable so you can avoid a certain difficult problem.
VOICEROID2
VOICEROID+
(partially)- Tohoku Zunko, Tohoku KiritanEx, Kotonoha Akane, Kotonoha Aoi
- Windows (10 or Server recommended)
- Node.js for Windows x86 (win32-ia32) -
^12.13.1
- CMake for Windows -
^3.16.4
- MSVC
^2017
, or just get the latest Visual Studio Community if you aren't certain what it would mean - Powershell
^3
- Voiceroid libraries installed with a valid and legitimate license
- Windows (10 or Server recommended)
- Voiceroid libraries installed with a valid and legitimate license
After you fulfilled the requirements above:
npm i ebyroid
Go to Releases and download the latest ebyroid-v*.zip
. Then unzip it to wherever you want (e.g. C:\ebyroid
).
const { Ebyroid, Voiceroid } = require('ebyroid');
const akari = new Voiceroid('akari-chan', 'C:\\Program Files (x86)\\AHS\\VOICEROID2', 'akari_44');
const kiritan = new Voiceroid('kiritan-chan', 'C:\\Program Files (x86)\\AHS\\VOICEROID+\\KiritanEX', 'kiritan_22');
const ebyroid = new Ebyroid(akari, kiritan);
ebyroid.use('akari-chan');
async function main() {
const pcm1 = await ebyroid.convert('こんにちは');
const pcm2 = await ebyroid.convertEx('東京特許許可局東京特きょきょきゃこく', 'kiritan-chan');
// and your code goes here...
}
main();
on CMD
C:\ebyroid> ebyroid.exe configure
C:\ebyroid> ebyroid.exe start --port 3333
on Powershell
PS C:\ebyroid> ./ebyroid configure
PS C:\ebyroid> ./ebyroid start --port 4567
id | type | required | desc | example |
---|---|---|---|---|
text | string | yes | TTS content | text=今日は%20はじめまして |
name | string | no | Voiceroid to use | name=kiritan-chan |
200 OK
=>application/octet-stream
4xx
and5xx
=>application/json
id | value | desc |
---|---|---|
Ebyroid-PCM-Sample-Rate | 22050|44100|48000 |
Samples per sec |
Ebyroid-PCM-Bit-Depth | 16 |
Fixed to 16-bit |
Ebyroid-PCM-Number-Of-Channels | 1|2 |
Mono or Stereo |
Note that these headers will be sent only with 200 OK
.
A byte stream of the Linear PCM data.
The stream doesn't contain file header bytes since this endpoint is rather for those who want to deal with raw audio data.
Use GET /api/v1/audiofile
instead if you demand .wav
file.
id | type | required | desc | example |
---|---|---|---|---|
text | string | yes | TTS content | text=今晩は%20さようなら |
name | string | no | Voiceroid to use | name=akane-chan |
200 OK
=>audio/wav
4xx
and5xx
=>application/json
None.
Complete data for a .wav
file.
Any modern browser should support either to play or to download it.
Because Ebyroid is a native addon that interacts with VOICEROID's 32-bit native code.
When you need to interact with 32-bit code, it is necessary that your code also runs in 32-bit.
Use nvm. Also, consider using Ebyroid's standalone server.
As of VOICEROID2
, the software design is sophisticated and there's only one executable while voice library varies.
That's why VOICEROID2
is fully supported. Just making a support for the one executable works fine.
In contrast, every VOICEROID+
has its own executable, which means I need to write individual support for each library.
And I just ran out of money after buying 4 of them.
I'd appreciate your support as in making a pull request, opening an issue or emailing me.
Yes. It sticks to asynchronous operation as hard as I can do in native code so as not to break Node's concept.
That results in Ebyroid being able to process ^100RPS
when the CPU is fast enough.
That said, however, some operations like switching voiceroid may acquire the inter-thread lock and take a couple of hundreds of millis (200ms-400ms practically) solely by itself. Be aware that frequent occurrence of such events may lead to slow the whole app.
MIT. See LICENSE.
Since Ebyroid is merely an ad-hoc, non-profit, open-source and free library that interacts with VOICEROID, it doesn't contain any data with commercial value nor has any intent to exploit. Ebyroid only uses information loaded to RAM in human-readable format, such as a string, considered to be public, as means of Fair Use of public information.
I will never be responsible for any consequences in connection with any use of Ebyroid or anyone that uses Ebyroid. I will only be concerned with calls of the US federal courts through Github, Inc. thus any other call and request from other authority or a company shall be ignored and immediately removed.
FAIR-USE COPYRIGHT DISCLAIMER
Copyright Disclaimer Under Section 107 of the Copyright Act 1976, allowance is made for "fair use" for purposes such as criticism, commenting, news reporting, teaching, scholarship, and research. Fair use is a use permitted by copyright statute that might otherwise be infringing. Non-profit, educational or personal use tips the balance in favor of fair use.
- Hanako - Discord TTS Bot for Wide-Use