? Aivisspeech Engine: ai v oice i mitation s ystem - Text zu Sprachmotor
Aivisspeech Engine ist eine japanische Sprachsynthese -Engine, die auf Voicevox -Motor basiert.
Es ist in Aivisspeech integriert, eine japanische Sprachsynthese -Software, und kann problemlos emotionale Stimmen erzeugen.
AudioQuery -Typspezifikationen geändertMora -Typspezifikationen geändertPreset TypWenn Sie Aivisspeech verwenden möchten, besuchen Sie bitte die offizielle Website von Aivisspeech.
Diese Seite enthält Informationen hauptsächlich für Entwickler.
Unten finden Sie ein Dokument für Benutzer:
Kompatibel mit PCs mit Windows, MacOS und Linux.
Um die AIVisspeech -Engine zu starten, benötigt Ihr PC mindestens 3 GB freier Speicher (RAM).
Tipp
Die Desktop -App Aivisspeech wird nur unter Windows und MacOS unterstützt.
In der Zwischenzeit ist Aivisspeech Engine, ein API -Server der Sprachsynthese, auch für Ubuntu/Debian Linux verfügbar.
Notiz
Wir haben den Betrieb auf Macs mit Intel CPUs nicht aktiv überprüft.
MACs mit Intel -CPUs sind bereits nicht mehr produziert und es wird immer schwieriger, eine Überprüfung vorzubereiten und Umgebung zu bauen. Wir empfehlen, dieses Produkt so viel wie möglich auf einem Mac mit Apple Silicon zu verwenden.
Warnung
Unter Windows 10 überprüfen wir nur den Betrieb von Version 22H2.
Es gab Berichte über Fälle, in denen Aivisspeech -Engine stürzt und nicht mit älteren Versionen von Windows 10 beginnt, die keine Unterstützung haben.
Aus Sicht der Sicherheit empfehlen wir dringend, dass Sie die Windows 10 -Umgebungen verwenden, die vor der Nutzung des Dienstes nur auf die Mindestversion 22H2 aktualisiert werden.
Die AIVISPEECH -Engine unterstützt Sprachsynthesemodelldateien im AIVMX -Format (AIVMX ( AI vis v oice m ODEL für ONN x ) ( .aivmx ).
AIVM ( ai vis v oice m odel) / AIVMX ( ai vis v oice m odel für ONN x ) ist ein offenes Dateiformat für AI-Sprachsynthesemodelle, das vorgebildete Modelle, Hyperparameter, Stilvektoren, Sprecher-Metadaten (Namen, Übersicht, Lizenzen, Icons, Voice-Samples usw.) in einer Datei kombiniert .
Weitere Informationen zu den AIVM -Spezifikationen und AIVM/AIVMX -Dateien finden Sie in den im AIVIS -Projekt entwickelten AIVM -Spezifikationen .
Notiz
"AIVM" ist auch ein allgemeiner Begriff sowohl für die Spezifikationen von AIVM/AIVMX -Format als auch für Metadatenspezifikationen.
Insbesondere ist die AIVM -Datei eine Modelldatei in "Safetensors -Format mit AIVM -Metadaten hinzugefügt", und die AIVMX -Datei ist eine Modelldatei im "Onnx -Format mit AIVM -Metadaten" hinzugefügt ".
"AIVM -Metadaten" bezieht sich auf verschiedene Metadaten, die mit einem ausgebildeten Modell in Verbindung gebracht werden, wie in der AIVM -Spezifikation definiert.
Wichtig
Die AIVisspeech -Engine ist auch eine Referenzimplementierung der AIVM -Spezifikation, ist jedoch absichtlich so konzipiert, dass sie nur AIVMX -Dateien unterstützt.
Dadurch wird die Abhängigkeit von Pytorch beseitigt, reduziert die Installationsgröße und bietet einen schnellen CPU -Inferenz mit der ONNX -Laufzeit.
Tipp
Mit AIVM Generator können Sie AIVM/AIVMX -Dateien aus vorhandenen Sprachsynthesemodellen erstellen und die Metadaten vorhandener AIVM/AIVMX -Dateien bearbeiten!
Die AIVMX -Dateien für die folgenden Modellarchitekturen sind verfügbar:
Style-Bert-VITS2Style-Bert-VITS2 (JP-Extra) Notiz
Die AIVM -Metadatenspezifikation ermöglicht es Ihnen, mehrsprachige Lautsprecher zu definieren, aber die AIVISPEech -Engine wie Voicevox -Engine unterstützt nur die japanische Sprachsynthese.
Selbst wenn Sie ein Sprachsynthesemodell verwenden, das die englische oder chinesische Sprachsynthese als Japanisch unterstützt, kann dies daher nicht durchgeführt werden.
Platzieren Sie die AIVMX -Dateien in den folgenden Ordnern für jedes Betriebssystem:
C:Users(ユーザー名)AppDataRoamingAivisSpeech-EngineModels~/Library/Application Support/AivisSpeech-Engine/Models~/.local/share/AivisSpeech-Engine/Models Der tatsächliche Ordnerpfad wird als Models directory: In den Protokollen unmittelbar nach dem Start von Aivisspeech -Motor.
Tipp
Bei Verwendung von AIVISSPEICH können Sie einfach Sprachsynthesemodelle aus dem AIVISSpeech -UI -Bildschirm hinzufügen!
Für Endbenutzer empfehlen wir Ihnen, ein Sprachsynthesemodell mit dieser Methode hinzuzufügen.
Wichtig
Der Bereitstellungsordner für die Entwicklungsversion (falls ausgeführt werden, ohne mit Pyinstaller erstellt zu werden) ist nicht AivisSpeech-Engine oder unter AivisSpeech-Engine-Dev .
Aivisspeech Engine bietet nützliche Befehlszeilenoptionen wie:
--host 0.0.0.0 ermöglicht die Zugriff auf die AIVISPEech-Engine von anderen Geräten im selben Netzwerk.--cors_policy_mode all , damit CORS -Anforderungen von allen Domänen zuzulassen.--load_all_models an, um alle installierten Sprachsynthesemodelle vorzuladen, wenn die AIVISSpeech -Motor startet.--help an, um eine Liste und Beschreibung aller verfügbaren Optionen anzuzeigen. Es stehen viele andere Optionen zur Verfügung. Weitere Informationen finden Sie in der Option --help .
Tipp
Bei der Ausführung mit der Option --use_gpu kann es DirectML unter Windows und Nvidia GPU (CUDA) unter Linux für die Sprachsynthese mit hoher Geschwindigkeit verwenden.
Darüber hinaus kann in Windows-Umgebungen DirectML-Inferenz auf PCs mit nur GPUs (IGPUs) mit integriertem CPUs durchgeführt werden. In den meisten Fällen ist es jedoch viel langsamer als die CPU-Inferenz, so dass dies nicht empfohlen wird.
Weitere Informationen finden Sie unter häufig gestellten Fragen.
Notiz
Die AIVisspeech -Engine arbeitet standardmäßig mit der Portnummer 10101 .
Wenn es mit anderen Anwendungen in Konflikt steht, können Sie sie mit der Option --port in eine beliebige Portnummer ändern.
Warnung
Im Gegensatz zu Voicevox Engine werden einige Optionen nicht in der Aivisspeech -Engine implementiert.
Unter Windows/MacOS können Sie die Aivisspeech -Engine selbst installieren, aber es ist einfacher, die Aivisspeech -Engine, die mit der Aivisspeech -Konsole ausgestattet ist, für sich selbst zu starten.
Der Pfad zur ausführbaren Datei von Aivisspeech Engine ( run.exe / run ), die mit Aivisspeech versendet wird, lautet wie folgt:
C:Program FilesAivisSpeechAivisSpeech-Enginerun.exeC:Users(ユーザー名)AppDataLocalProgramsAivisSpeechAivisSpeech-Enginerun.exe ./Applications/AivisSpeech.app/Contents/Resources/AivisSpeech-Engine/run~/Applications/AivisSpeech.app/Contents/Resources/AivisSpeech-Engine/run . Notiz
Das Standardmodell (ca. 250 MB) und das für die Inferenz erforderliche Bert -Modell (ca. 1,3 GB) werden beim ersten Start automatisch heruntergeladen, sodass es einige Minuten dauert, bis das Start -up abgeschlossen ist.
Bitte warten Sie eine Weile, bis das Startup abgeschlossen ist.
Um Aivisspeech -Engine ein Sprachsynthesemodell hinzuzufügen, finden Sie in der Modelldatei.
Sie können es auch hinzufügen, indem Sie auf "Einstellungen"> "Sprachsynthesismodell verwalten" in Aivisspeech klicken.
Wenn Sie in einer Linux + NVIDIA -GPU -Umgebung ausgeführt werden, muss die CUDA/CUDNN -Version, die die ONNX -Laufzeit unterstützt, mit der CUDA/CUDNN -Version der Hostumgebung übereinstimmen, und die Betriebsbedingungen sind streng.
Insbesondere die von Aivisspeech -Motor verwendete ONNX -Laufzeit erfordert CUDA 12.x / cudnn 9.x oder höher.
Docker arbeitet unabhängig von der Host -Betriebssystemumgebung. Wir empfehlen daher, es mit Docker zu installieren.
Wenn Sie einen Docker-Container ausführen, montieren Sie immer ~/.local/share/AivisSpeech-Engine to /home/user/.local/share/AivisSpeech-Engine-Dev im Container.
Auf diese Weise können Sie auch nachdem Sie den Container gestoppt oder neu gestartet haben, das installierte Sprachsynthesemodell und das Bert -Modell -Cache (ca. 1,3 GB) beibehalten.
Um der Aivisspeech-Engine in einer Docker-Umgebung ein Sprachsynthesemodell hinzuzufügen, platzieren Sie die Modelldatei (.aivmx) unter ~/.local/share/AivisSpeech-Engine/Models in der Hostumgebung.
Wichtig
Stellen Sie sicher, dass Sie es gegen /home/user/.local/share/AivisSpeech-Engine-Dev montieren.
Da die Aivisspeech-Engine auf dem Docker-Bild nicht mit Pyinstaller erstellt wird, erhält der Name des Datenordners das Suffix von -Dev und AivisSpeech-Engine-Dev .
docker pull ghcr.io/aivis-project/aivisspeech-engine:cpu-latest
docker run --rm -p ' 10101:10101 '
-v ~ /.local/share/AivisSpeech-Engine:/home/user/.local/share/AivisSpeech-Engine-Dev
ghcr.io/aivis-project/aivisspeech-engine:cpu-latestdocker pull ghcr.io/aivis-project/aivisspeech-engine:nvidia-latest
docker run --rm --gpus all -p ' 10101:10101 '
-v ~ /.local/share/AivisSpeech-Engine:/home/user/.local/share/AivisSpeech-Engine-Dev
ghcr.io/aivis-project/aivisspeech-engine:nvidia-latest Wenn Sie den folgenden One-Liner in Bash ausführen, wird die Sprach-synthetisierte WAV-Datei auf audio.wav ausgegeben.
Wichtig
Es wird angenommen, dass die Aivisspeech -Engine im Voraus gestartet wurde und dass Models directory: Das folgende Verzeichnis enthält das Sprachsynthesis -Modell (.aivmx), das der Stil -ID entspricht.
# STYLE_ID は音声合成対象のスタイル ID 、別途 /speakers API から取得が必要
STYLE_ID=888753760 &&
echo -n "こんにちは、音声合成の世界へようこそ! " > text.txt &&
curl -s -X POST " 127.0.0.1:10101/audio_query?speaker= $STYLE_ID " --get --data-urlencode [email protected] > query.json &&
curl -s -H " Content-Type: application/json " -X POST -d @query.json " 127.0.0.1:10101/synthesis?speaker= $STYLE_ID " > audio.wav &&
rm text.txt query.jsonTipp
Detaillierte API -Anforderungs- und Antwortspezifikationen finden Sie in der API -Dokumentation und -kompatibilität mit der VoiceVox -API. Die API -Dokumentation spiegelt immer Änderungen in der neuesten Entwicklungsversion wider.
Sie können die API -Dokumentation (Swagger -Benutzeroberfläche) für die laufende Aivisspeech -Engine anzeigen, indem Sie mit der Aivisspeech -Engine oder dem Aivisspeech -Editor in Bearbeitung http://127.0.0.1:10101/docs zugreifen.
Die AIVISPEech -Motor ist im Allgemeinen mit der HTTP -API von Voicevox -Engine kompatibel.
Wenn Sie Software haben, die die HTTP -API von Voicevox Engine unterstützt, sollten Sie in der Lage sein, die AIVISPEech -Engine zu unterstützen, indem Sie einfach die API -URL durch http://127.0.0.1:10101 ersetzen.
Wichtig
Wenn Sie jedoch die von der API /audio_query im API -Client erhaltenen AudioQuery -Inhalte bearbeiten und dann an die /synthesis -API weitergeben, ist es möglicherweise nicht möglich, die Sprache aufgrund von Unterschieden in den Spezifikationen ordnungsgemäß zu synthetisieren (siehe unten).
Aus diesem Grund kann der Aivisspeech-Editor sowohl die Aivisspeech-Engine als auch die VoiceVox-Engine (bei Verwendung von Mehrmotierfunktionen) verwenden.
Die Verwendung von Aivisspeech -Engine im VoiceVox -Editor reduziert die Qualität der Sprachsynthese aufgrund von Einschränkungen in der Editorimplementierung erheblich. Es besteht nicht nur die Möglichkeit, die einzigartigen Parameter der Aivisspeech-Engine zu verwenden, sondern auch, dass beim Aufrufen nicht kompatibler Funktionen ein Fehler auftreten kann.
Wir empfehlen dringend, es mit dem Aivisspeech -Editor zu verwenden, um bessere Sprachsyntheseergebnisse zu erzielen.
Notiz
Obwohl es in allgemeinen API -Anwendungsfällen im Allgemeinen kompatibel sein sollte, kann es möglicherweise inkompatible APIs als die folgenden geben, da Sprachsynthesesysteme mit grundlegend unterschiedlichen Modellarchitekturen gewaltsam in denselben API -Spezifikationen einbezogen werden.
Wenn Sie es über das Problem melden, werden wir alle Kompatibilitätsverbesserungen festlegen.
Im Folgenden finden Sie Änderungen der API -Spezifikationen von Voicevox Engine:
Die lokalen IDs im Lautsprecher im AIVM-Manifest, die in der AIVMX-Datei enthalten sind, werden in Seriennummern von 0 für jeden Sprecher verwaltet.
In dem Sprachsynthesemodell der Style-Bert-Vits2-Architektur entspricht dieser Wert dem Wert der data.style2id des Modells. Style2ID.
Andererseits gibt die API von Voicevox Engine keine Lautsprecher -UUID ( speaker_uuid ) an und nur die Stil -ID ( style_id ) wird an die API der Sprachsynthese übergeben, möglicherweise aus historischen Gründen.
Voicevox Engine hat feste Lautsprecher und Stile, sodass das Entwicklungsteam die "Stil -ID" eindeutig verwalten konnte.
In der Aivisspeech -Engine können Benutzer Sprachsynthesemodelle frei hinzufügen.
Daher muss die VoiceVox -API -kompatible "Stil -ID" eindeutig sein, egal welches Sprachsynthesemodell hinzugefügt wird.
Dies liegt daran, dass sich der Wert und Stil -IDs, das im vorhandenen Modell enthalten ist, überlappen können, wenn ein neues Sprachsynthesemodell hinzugefügt wird, wenn ein neuer Sprachsynthese -Modell hinzugefügt wird.
Daher kombiniert die AIVISPEech -Engine den Lautsprecher UUID und die Stil -ID auf dem AIVM -Manifest, um eine weltweit eindeutige "Stil -ID" zu erzeugen, die mit der VoiceVox -API kompatibel ist.
Die spezifische Generationsmethode lautet wie folgt:
Warnung
Aus diesem Grund können unerwartete Probleme mit der VoiceVox-API-fähigen Software auftreten, die nicht davon ausgeht, dass eine 32-Bit-Signed Integer in der "Stil-ID" enthalten ist.
Warnung
Es ist eine äußerst geringe Wahrscheinlichkeit, dass sich unterschiedliche IDs im Lautsprecher-Stil überlappen können (Kollision), da sie die globale Einzigartigkeit von Sprecher-UUIDs in einen 32-Bit-Signed Ganzzahlbereich passen.
Zu diesem Zeitpunkt gibt es keine Problemumgehung für doppelte Stil -IDs, aber in Wirklichkeit ist dies in den meisten Fällen kein Problem.
Tipp
Die von der AIVISPEech -Engine automatisch generierten "VoiceVox -API -kompatiblen" Stil -IDs "können aus der API /speakers erhalten werden.
Diese API gibt eine Liste von Lautsprecherinformationen zurück, die auf Aivisspeech -Engine installiert sind.
AudioQuery -Typspezifikationen geändert AudioQuery -Typ ist eine Abfrage zur Ausführung der Sprachsynthese, indem Text- oder Phonemsequenzen angegeben wird.
Die Hauptänderungen aus AudioQuery -Typ in VoiceVox -Engine sind wie folgt:
intonationScale -Feldes ist unterschiedlich.intonationScale in Aivisspeech Engine umgewandelt werden:intonationScale 0,0 bis 1,0 beträgt, entspricht Style-Bert-Vits2 dem Bereich von 0,0 bis 1,0.intonationScale 1,0 bis 2,0 beträgt, entspricht Style-Bert-Vits2 dem Bereich von 1,0 bis 10,0.tempoDynamicsScale -Feld für sich selbst hinzugefügt.tempoDynamicsScale in Aivisspeech Engine konvertiert werden:tempoDynamicsScale 0,0 bis 1,0 beträgt, entspricht Style-Bert-Vits2 dem Bereich von 0,0 bis 0,2.tempoDynamicsScale 1,0 bis 2,0 beträgt, entspricht Style-Bert-Vits2 dem Bereich von 0,2 bis 1,0.pitchScale -Feldes sind unterschiedlich.pauseLength und pauseLengthScale werden nicht unterstützt.kana -Feldes sind unterschiedlich.Weitere Informationen zu den Änderungen finden Sie unter Modell.py.
Mora -Typspezifikationen geändert Mora -Typ ist eine Datenstruktur, die die Maura des Sprachtextes darstellt.
Tipp
Eine Mora ist die kleinste Klanggruppierung, wenn sie tatsächlich ausgesprochen wird (wie "a", "ka" oder "o").
Mora -Typen werden nicht allein für API -Anforderungsantworten verwendet AudioQuery.accent_phrases[n].pause_mora werden immer indirekt über AudioQuery.accent_phrases[n].moras verwendet.
Die Hauptänderungen am Mora -Typ in Voicevox -Motor sind wie folgt:
pause_mora behandelt, aber im Aivisspeech -Motor wird sie als normale Moras behandelt.text das gleiche Symbol und vowel ist auf "Pau" gesetzt.consonant / vowel ist schreibgeschützt.text wird immer zum Lesen von Text während der Sprachsynthese verwendet.consonant_length / vowel_length / pitch werden nicht unterstützt.Weitere Informationen zu den Änderungen finden Sie unter tts_pipeline/model.py.
Preset Typ Preset Typ ist voreingestellte Informationen zur Ermittlung des Anfangswerts einer Sprachsyntheseabfrage auf dem Editor.
Die Änderungen entsprechen im Allgemeinen den Änderungen in der Felderspezifikation für intonationScale / tempoDynamicsScale / pitchScale / pauseLength / pauseLengthScale , die in AudioQuery -Typen beschrieben sind.
Weitere Informationen zu den Änderungen finden Sie unter Preset/Modell.py.
Warnung
Sang- und stornierbare Sprachsynthese -APIs werden nicht unterstützt.
Es existiert als Endpunkt für Kompatibilitätszwecke, gibt jedoch immer 501 Not Implemented .
Weitere Informationen finden Sie unter App/Router/Charakter.py/App/Router/tts_pipeline.py.
/singers/singer_info/cancellable_synthesis/sing_frame_audio_query/sing_frame_volume/frame_synthesis Warnung
Die /synthesis_morphing -API, die Morphing -Funktionalität liefert, wird nicht unterstützt.
Da sich das Sprach -Timing für jeden Sprecher unterscheidet, ist es unmöglich zu implementieren (es funktioniert, kann aber nicht zuhören), sodass 400 Bad Request immer zurückgegeben werden.
Gibt zurück, ob Morphing für jeden Lautsprecher /morphable_targets verfügbar ist.
Weitere Informationen finden Sie unter App/Router/Morphing.py.
/synthesis_morphing/morphable_targetsWarnung
Es existiert als Parameter für Kompatibilitätszwecke, wird aber immer ignoriert.
Weitere Informationen finden Sie unter App/Router/Charakter.py/App/Router/tts_pipeline.py.
core_version Parameterenable_interrogative_upspeak parameterどうですか…? Fügen Sie einfach eine "?" Bis zum Ende des Textes zum Vorlesen wie dieses, und Sie können ihn mit einer fragwürdigen Intonation vorlesen. Tipp
Bitte werfen Sie auch einen Blick auf die FAQs/Q & A von Aivisspeech Editor.
intonationScale ) führt zu einem Sprach der Rede. Dies ist die aktuelle Spezifikation der von Aivisspeech Engine unterstützten Modelarchitektur der Style-Bert-Vits2.
Abhängig vom Lautsprecher und Stil kann Ihre Stimme seltsam werden, wenn Sie intonationScale zu stark erhöhen, oder Sie können am Ende eine unnatürliche Stimme lesen.
Die obere Grenze intonationScale -Werts, mit dem Sie ordnungsgemäß sprechen können, variiert je nach Lautsprecher und Stil. Passen Sie den Wert angemessen an.
Bei Aivisspeech Engine versuchen wir sicherzustellen, dass der richtige Lesen und der richtige Akzent auf einmal korrekt sind, aber es gibt Zeiten, in denen es unvermeidlich ist, dass er falsch ist.
Wörter, die nicht im integrierten Wörterbuch registriert sind, wie z. B. richtige Substantive und Namen der Menschen (insbesondere funkelnde Namen), werden oft nicht richtig gelesen.
Sie können die Art und Weise ändern, wie diese Wörter gelesen werden, indem Sie das Wörterbuch registrieren. Versuchen Sie, Wörter vom Aivisspeech -Editor oder der API zu registrieren.
Darüber hinaus kann für zusammengesetzte Wörter und englische Wörter der im Wörterbuch registrierte Inhalt unabhängig von der Priorität des Wortes nicht reflektiert werden. Dies ist die aktuelle Spezifikation.
Die Aivisspeech -Engine wurde entwickelt, um die Sprache in relativ kurzen Sätzen wie Sätzen oder Bedeutungsgruppen zu synthetisieren.
Durch das Senden von langen Sätzen, die 1000 Zeichen gleichzeitig an /synthesis -API überschreiten, können Probleme wie folgt verursacht werden:
Beim synthetisierenden langen Sätze empfehlen wir, die Sätze an folgenden Positionen zu trennen und sie an die API der Sprachsynthese zu senden.
Es gibt keine harten Grenzen, aber es ist wünschenswert, bis zu 500 Zeichen pro Sprachsynthese zu haben.
Tipp
Das Teilen von Sätzen mit semantischen Pausen neigt dazu, mehr natürliche Intonationsgeräusche zu erzeugen.
Dies liegt daran, dass emotionale Ausdrücke und Intonationen, die dem Inhalt des Textes entsprechen, auf den gesamten Satz angewendet werden, der gleichzeitig an die Sprachsynthese -API gesendet wird.
Durch die richtige Aufteilung der Sätze können Sie den emotionalen Ausdruck und die Intonation jedes Satzes zurücksetzen, was zu einer natürlicheren Lektüre führt.
Der Internetzugang ist nur erforderlich, wenn Sie erstmals mit AIVisspeech beginnen, da Modelldaten heruntergeladen werden.
Sie können den PC offline im zweiten oder späteren Boot verwenden.
Dies kann auf dem derzeit ausgeführten Bildschirm Aivisspeech Engine -Konfiguration erfolgen.
Wenn Sie http://127.0.0.1:[AivisSpeech Engine のポート番号]/setting von Ihrem Browser beim Starten der AIVISPEech -Engine zugreifen, wird der Konfigurationsbildschirm der AIVISPECH -Motorkonfiguration geöffnet.
Die Standard -Portnummer für Aivisspeech -Motor ist 10101 .
--use_gpu ) gewechselt und erzeugt immer noch langsamer als der CPU -Modus.Der GPU-Modus kann nur für PCs mit integriertem CPU (IGPU) verwendet werden, aber in den meisten Fällen ist es viel langsamer als der CPU-Modus, sodass dies nicht empfohlen wird.
Dies liegt daran, dass GPUs mit integriertem CPUs eine geringere Leistung aufweisen als unabhängige GPUs (DGPUs) und nicht gut in der hohen Verarbeitung wie AI-Sprachsynthese.
Andererseits wurde die Leistung von CPUs heutzutage erheblich verbessert, und die CPU allein kann mit hoher Geschwindigkeit Audio erzeugen.
Daher empfehlen wir die Verwendung der CPU -Modus auf PCs, die keine DGPU haben.
Wenn Sie einen PC mit der 12. Generation von Intel oder später CPU (P-CORE/E-CORE-Hybridkonfiguration) verwenden, kann sich die Leistung der Audiogenerierung abhängig von den Leistungseinstellungen von Windows dramatisch ändern.
Dies liegt daran, dass der Standard "Balance" -Modus es für die Aufgaben der Sprachgenerierung erleichtert, E-Cores zuzuweisen.
Ändern Sie die Einstellungen mit den folgenden Schritten, um sowohl die P- als auch die E -Kerne optimal zu nutzen, und generieren Sie die Stimme schneller.
*Der "Power -Plan" im Bedienfeld verfügt auch über eine "Hochleistungs -Einstellung", die Einstellungen sind jedoch unterschiedlich.
Für die Intel 12. Generation oder höhere CPUs empfehlen wir, den "Power -Modus" auf dem Bildschirm Windows 11 -Einstellungen zu ändern.
Aivisspeech möchte eine freie AI -Sprachsynthese -Software sein, die nicht durch ihre Verwendung gebunden ist.
(Es hängt von der Lizenz des in der Erbringbaren verwendeten Sprachsynthesemodells ab.
... Ich möchte jedoch auch, dass mehr Menschen etwas über Aivisspeech wissen.
Wenn Sie möchten, würde ich mich freuen, wenn Sie AiVisspeech irgendwo in der Lieferablen zuschreiben könnten. (Das Kreditformat bleibt Ihnen überlassen.)
Es wird im folgenden Ordner gespeichert:
C:Users(ユーザー名)AppDataRoamingAivisSpeech-EngineLogs~/Library/Application Support/AivisSpeech-Engine/Logs~/.local/share/AivisSpeech-Engine/LogsWenn Sie ein Problem finden, melden Sie es bitte mit einer der folgenden Methoden:
Github -Problem (empfohlen)
Wenn Sie ein GitHub -Konto haben, melden Sie sich bitte über unser Github -Problem und wir können frühzeitig antworten.
Twitter (x)
Sie können auf das offizielle AIVIS -Projektkonto, DM oder Tweet mit dem Hashtag #Aivisspeech antworten.
Kontaktformular
Sie können auch über das AIVIS -Projektkontaktformular melden.
Bitte melden Sie die folgenden Informationen so weit wie möglich, und wir können schneller antworten.
Voicevox ist eine riesige Software, die heute noch aktiv entwickelt wird.
Daher entwickelt Aivisspeech Engine die neueste Version von Voicevox Engine unter der folgenden Richtlinie:
voicevox_engine -Verzeichnis um und der Unterschied in den Änderungen der Einfuhranweisung wird riesig sein, sodass das Rebranding nicht durchgeführt wird. Das Verfahren unterscheidet sich erheblich von der ursprünglichen Voicevox -Engine.
Sie müssen zuvor Python 3.11 installiert lassen.
# Poetry と pre-commit をインストール
pip install poetry poetry-plugin-export pre-commit
# pre-commit を有効化
pre-commit install
# 依存関係をすべてインストール
poetry installDas Verfahren unterscheidet sich erheblich von der ursprünglichen Voicevox -Engine.
# 開発環境で AivisSpeech Engine を起動
poetry run task serve
# AivisSpeech Engine のヘルプを表示
poetry run task serve --help
# コードフォーマットを自動修正
poetry run task format
# コードフォーマットをチェック
poetry run task lint
# typos によるタイポチェック
poetry run task typos
# テストを実行
poetry run task test
# テストのスナップショットを更新
poetry run task update-snapshots
# ライセンス情報を更新
poetry run task update-licenses
# AivisSpeech Engine をビルド
poetry run task buildVon der Basis-Voicevox-Engine-Lizenzen werden nur LGPL-3.0 unabhängig geerbt.
Im Folgenden werden Dokumente/ die folgenden Dokumente ohne Änderung aus dem ursprünglichen VoiceVox -Engine -Dokument übertragen. Es ist nicht garantiert, dass der Inhalt dieser Dokumente auch mit Aivisspeech -Engine funktioniert.
Dies ist der Motor von Voicevox.
In Wirklichkeit handelt es sich um einen HTTP -Server, sodass Sie Text und Sprache durch Senden einer Anfrage synthetisieren können.
(Der Editor ist Voicevox, der Kern ist Voicevox -Kern, und die Gesamtstruktur kann hier gefunden werden.)
Hier ist ein Leitfaden, der auf Ihre Bedürfnisse zugeschnitten ist.
Laden Sie den entsprechenden Motor hier herunter.
Bitte beachten Sie die API -Dokumentation.
Wenn der VoiceVox -Engine oder -seditor ausgeführt wird, können Sie auch die Dokumentation für den gestarteten Motor anzeigen.
Für zukünftige Pläne kann auch die Zusammenarbeit mit Voicevox Voice Synthesis Engine nützlich sein.
docker pull voicevox/voicevox_engine:cpu-latest
docker run --rm -p ' 127.0.0.1:50021:50021 ' voicevox/voicevox_engine:cpu-latestdocker pull voicevox/voicevox_engine:nvidia-latest
docker run --rm --gpus all -p ' 127.0.0.1:50021:50021 ' voicevox/voicevox_engine:nvidia-latest Bei Verwendung der GPU -Version können Fehler je nach Umgebung auftreten. In diesem Fall können Sie das Problem durch Hinzufügen von --runtime=nvidia to docker run lösen.
echo -n "こんにちは、音声合成の世界へようこそ" > text.txt
curl -s
-X POST
" 127.0.0.1:50021/audio_query?speaker=1 "
--get --data-urlencode [email protected]
> query.json
curl -s
-H " Content-Type: application/json "
-X POST
-d @query.json
" 127.0.0.1:50021/synthesis?speaker=1 "
> audio.wavDer generierte Audio hat eine etwas spezielle Abtastrate von 24.000 Hz, sodass einige Audiospieler möglicherweise nicht spielen können.
Der für speaker angegebene Wert ist style_id am Endpunkt /speakers erhalten wird. Es wird für die Kompatibilität speaker .
Sie können das Audio anpassen, indem Sie die Parameter der Sprachsynthese -Abfrage bearbeiten, die mit /audio_query erhalten wurden.
Versuchen Sie zum Beispiel, mit einer Geschwindigkeit von 1,5 -mal schneller zu sprechen.
echo -n "こんにちは、音声合成の世界へようこそ" > text.txt
curl -s
-X POST
" 127.0.0.1:50021/audio_query?speaker=1 "
--get --data-urlencode [email protected]
> query.json
# sed を使用して speedScale の値を 1.5 に変更
sed -i -r ' s/"speedScale":[0-9.]+/"speedScale":1.5/ ' query.json
curl -s
-H " Content-Type: application/json "
-X POST
-d @query.json
" 127.0.0.1:50021/synthesis?speaker=1 "
> audio_fast.wav " Aquestalk Windnotation " ist eine Notation, die feststellt, wie nur Katakana und Symbole gelesen werden können. Aquestalk Dies unterscheidet sich zum Teil von der ursprünglichen Notation.
Aquestalk -Stile folgen den folgenden Regeln:
/ 、 getrennt. Stille Intervalle werden nur eingefügt, 、 sie durch getrennt sind._ vor Kana stellen, wird Kana still.' . Alle Akzentphrasen müssen eine Akzentposition angegeben haben.? Sie können Fragen durch Hinzufügen aussprechen (Vollbreite) Die Antwort auf /audio_query beschreibt die Lektüre, die der Motor beurteilt.
Durch das Ändern können Sie den Klanglesung und den Akzent steuern.
# 読ませたい文章をutf-8でtext.txtに書き出す
echo -n "ディープラーニングは万能薬ではありません" > text.txt
curl -s
-X POST
" 127.0.0.1:50021/audio_query?speaker=1 "
--get --data-urlencode [email protected]
> query.json
cat query.json | grep -o -E " " kana " : " .* " "
# 結果... "kana":"ディ'イプ/ラ'アニングワ/バンノオヤクデワアリマセ'ン"
# "ディイプラ'アニングワ/バンノ'オヤクデワ/アリマセ'ン"と読ませたいので、
# is_kana=trueをつけてイントネーションを取得しnewphrases.jsonに保存
echo -n "ディイプラ'アニングワ/バンノ'オヤクデワ/アリマセ'ン" > kana.txt
curl -s
-X POST
" 127.0.0.1:50021/accent_phrases?speaker=1&is_kana=true "
--get --data-urlencode [email protected]
> newphrases.json
# query.jsonの"accent_phrases"の内容をnewphrases.jsonの内容に置き換える
cat query.json | sed -e " s/[{.*}]/ $( cat newphrases.json ) /g " > newquery.json
curl -s
-H " Content-Type: application/json "
-X POST
-d @newquery.json
" 127.0.0.1:50021/synthesis?speaker=1 "
> audio.wavSie können das Benutzerwörterbuch durchsuchen, Wörter aus der API hinzufügen, bearbeiten und löschen.
Sie können eine Liste des Benutzerwörterbuchs abrufen, indem Sie eine GET -Anfrage an /user_dict senden.
curl -s -X GET " 127.0.0.1:50021/user_dict " Sie können Ihrem Benutzerwörterbuch Wörter hinzufügen, indem Sie eine Postanforderung an /user_dict_word senden.
Die folgenden URL -Parameter sind erforderlich:
Dieser Artikel wird für den Ort des Akzentkerns nützlich sein.
Der Zahlenteil mit dem 〇 -Typ wird zur Akzentkernposition.
https://tdmelodic.readthedocs.io/ja/latest/pages/inTroduction.html
Der Rückgabewert für den Erfolg ist eine UUID -Zeichenfolge, die dem Wort zugewiesen ist.
surface= " test "
pronunciation= "テスト"
accent_type= " 1 "
curl -s -X POST " 127.0.0.1:50021/user_dict_word "
--get
--data-urlencode " surface= $surface "
--data-urlencode " pronunciation= $pronunciation "
--data-urlencode " accent_type= $accent_type " Sie können Wörter im Benutzer -Wörterbuch ändern, indem Sie eine Put -Anforderung an /user_dict_word/{word_uuid} senden.
Die folgenden URL -Parameter sind erforderlich:
WORD_UUID kann beim Hinzufügen von Wörtern überprüft werden und kann auch durch Bezugnahme auf ein Benutzerwörterbuch überprüft werden.
Wenn er erfolgreich ist, beträgt der Rückgabewert 204 No Content .
surface= " test2 "
pronunciation= "テストツー"
accent_type= " 2 "
# 環境によってword_uuidは適宜書き換えてください
word_uuid= " cce59b5f-86ab-42b9-bb75-9fd3407f1e2d "
curl -s -X PUT " 127.0.0.1:50021/user_dict_word/ $word_uuid "
--get
--data-urlencode " surface= $surface "
--data-urlencode " pronunciation= $pronunciation "
--data-urlencode " accent_type= $accent_type " Sie können Wörter im Benutzer -Wörterbuch löschen, indem Sie eine Anforderung an /user_dict_word/{word_uuid} einreichen.
WORD_UUID kann beim Hinzufügen von Wörtern überprüft werden und kann auch durch Bezugnahme auf ein Benutzerwörterbuch überprüft werden.
成功した場合の返り値は204 No Contentになります。
# 環境によってword_uuidは適宜書き換えてください
word_uuid= " cce59b5f-86ab-42b9-bb75-9fd3407f1e2d "
curl -s -X DELETE " 127.0.0.1:50021/user_dict_word/ $word_uuid " エンジンの設定ページ内の「ユーザー辞書のエクスポート&インポート」節で、ユーザー辞書のインポート&エクスポートが可能です。
他にも API でユーザー辞書のインポート&エクスポートが可能です。
インポートにはPOST /import_user_dict 、エクスポートにはGET /user_dictを利用します。
引数等の詳細は API ドキュメントをご覧ください。
ユーザーディレクトリにあるpresets.yamlを編集することでキャラクターや話速などのプリセットを使うことができます。
echo -n "プリセットをうまく活用すれば、サードパーティ間で同じ設定を使うことができます" > text.txt
# プリセット情報を取得
curl -s -X GET " 127.0.0.1:50021/presets " > presets.json
preset_id= $( cat presets.json | sed -r ' s/^.+"id":s?([0-9]+?).+$/1/g ' )
style_id= $( cat presets.json | sed -r ' s/^.+"style_id":s?([0-9]+?).+$/1/g ' )
# 音声合成用のクエリを取得
curl -s
-X POST
" 127.0.0.1:50021/audio_query_from_preset?preset_id= $preset_id "
--get --data-urlencode [email protected]
> query.json
# 音声合成
curl -s
-H " Content-Type: application/json "
-X POST
-d @query.json
" 127.0.0.1:50021/synthesis?speaker= $style_id "
> audio.wavspeaker_uuidは、 /speakersで確認できますidは重複してはいけません/synthesis_morphingでは、2 種類のスタイルでそれぞれ合成された音声を元に、モーフィングした音声を生成します。
echo -n "モーフィングを利用することで、2種類の声を混ぜることができます。 " > text.txt
curl -s
-X POST
" 127.0.0.1:50021/audio_query?speaker=8 "
--get --data-urlencode [email protected]
> query.json
# 元のスタイルでの合成結果
curl -s
-H " Content-Type: application/json "
-X POST
-d @query.json
" 127.0.0.1:50021/synthesis?speaker=8 "
> audio.wav
export MORPH_RATE=0.5
# スタイル2種類分の音声合成+WORLDによる音声分析が入るため時間が掛かるので注意
curl -s
-H " Content-Type: application/json "
-X POST
-d @query.json
" 127.0.0.1:50021/synthesis_morphing?base_speaker=8&target_speaker=10&morph_rate= $MORPH_RATE "
> audio.wav
export MORPH_RATE=0.9
# query、base_speaker、target_speakerが同じ場合はキャッシュが使用されるため比較的高速に生成される
curl -s
-H " Content-Type: application/json "
-X POST
-d @query.json
" 127.0.0.1:50021/synthesis_morphing?base_speaker=8&target_speaker=10&morph_rate= $MORPH_RATE "
> audio.wav追加情報の中の portrait.png を取得するコードです。
(jqを使用して json をパースしています。)
curl -s -X GET " 127.0.0.1:50021/speaker_info?speaker_uuid=7ffcb7ce-00ec-4bdc-82cd-45a8889e43ff "
| jq -r " .portrait "
| base64 -d
> portrait.png/cancellable_synthesisでは通信を切断した場合に即座に計算リソースが開放されます。
( /synthesisでは通信を切断しても最後まで音声合成の計算が行われます)
この API は実験的機能であり、エンジン起動時に引数で--enable_cancellable_synthesisを指定しないと有効化されません。
音声合成に必要なパラメータは/synthesisと同様です。
echo -n ' {
"notes": [
{ "key": null, "frame_length": 15, "lyric": "" },
{ "key": 60, "frame_length": 45, "lyric": "ド" },
{ "key": 62, "frame_length": 45, "lyric": "レ" },
{ "key": 64, "frame_length": 45, "lyric": "ミ" },
{ "key": null, "frame_length": 15, "lyric": "" }
]
} ' > score.json
curl -s
-H " Content-Type: application/json "
-X POST
-d @score.json
" 127.0.0.1:50021/sing_frame_audio_query?speaker=6000 "
> query.json
curl -s
-H " Content-Type: application/json "
-X POST
-d @query.json
" 127.0.0.1:50021/frame_synthesis?speaker=3001 "
> audio.wav楽譜のkeyは MIDI 番号です。
lyricは歌詞で、任意の文字列を指定できますが、エンジンによってはひらがな・カタカナ1モーラ以外の文字列はエラーになることがあります。
フレームレートはデフォルトが 93.75Hz で、エンジンマニフェストのframe_rateで取得できます。
1つ目のノートは無音である必要があります。
/sing_frame_audio_queryで指定できるspeakerは、 /singersで取得できるスタイルの内、種類がsingかsinging_teacherなスタイルのstyle_idです。
/frame_synthesisで指定できるspeakerは、 /singersで取得できるスタイルの内、種類がframe_decodeのstyle_idです。
引数がspeakerという名前になっているのは、他の API と一貫性をもたせるためです。
/sing_frame_audio_queryと/frame_synthesisに異なるスタイルを指定することも可能です。
VOICEVOX ではセキュリティ保護のためlocalhost・127.0.0.1・app://・Origin なし以外の Origin からリクエストを受け入れないようになっています。 そのため、一部のサードパーティアプリからのレスポンスを受け取れない可能性があります。
これを回避する方法として、エンジンから設定できる UI を用意しています。
実行時引数--disable_mutable_apiか環境変数VV_DISABLE_MUTABLE_API=1を指定することで、エンジンの設定や辞書などを変更する API を無効にできます。
リクエスト・レスポンスの文字コードはすべて UTF-8 です。
エンジン起動時に引数を指定できます。詳しいことは-h引数でヘルプを確認してください。
$ python run.py -h
usage: run.py [-h] [--host HOST] [--port PORT] [--use_gpu] [--voicevox_dir VOICEVOX_DIR] [--voicelib_dir VOICELIB_DIR] [--runtime_dir RUNTIME_DIR] [--enable_mock] [--enable_cancellable_synthesis]
[--init_processes INIT_PROCESSES] [--load_all_models] [--cpu_num_threads CPU_NUM_THREADS] [--output_log_utf8] [--cors_policy_mode {CorsPolicyMode.all,CorsPolicyMode.localapps}]
[--allow_origin [ALLOW_ORIGIN ...]] [--setting_file SETTING_FILE] [--preset_file PRESET_FILE] [--disable_mutable_api]
VOICEVOX のエンジンです。
options:
-h , --help show this help message and exit
--host HOST 接続を受け付けるホストアドレスです。
--port PORT 接続を受け付けるポート番号です。
--use_gpu GPUを使って音声合成するようになります。
--voicevox_dir VOICEVOX_DIR
VOICEVOXのディレクトリパスです。
--voicelib_dir VOICELIB_DIR
VOICEVOX COREのディレクトリパスです。
--runtime_dir RUNTIME_DIR
VOICEVOX COREで使用するライブラリのディレクトリパスです。
--enable_mock VOICEVOX COREを使わずモックで音声合成を行います。
--enable_cancellable_synthesis
音声合成を途中でキャンセルできるようになります。
--init_processes INIT_PROCESSES
cancellable_synthesis機能の初期化時に生成するプロセス数です。
--load_all_models 起動時に全ての音声合成モデルを読み込みます。
--cpu_num_threads CPU_NUM_THREADS
音声合成を行うスレッド数です。指定しない場合、代わりに環境変数 VV_CPU_NUM_THREADS の値が使われます。VV_CPU_NUM_THREADS が空文字列でなく数値でもない場合はエラー終了します。
--output_log_utf8 ログ出力をUTF-8でおこないます。指定しない場合、代わりに環境変数 VV_OUTPUT_LOG_UTF8 の値が使われます。VV_OUTPUT_LOG_UTF8 の値が1の場合はUTF-8で、0または空文字、値がない場合は環境によって自動的に決定されます。
--cors_policy_mode {CorsPolicyMode.all,CorsPolicyMode.localapps}
CORSの許可モード。allまたはlocalappsが指定できます。allはすべてを許可します。localappsはオリジン間リソース共有ポリシーを、app://.とlocalhost関連に限定します。その他のオリジンはallow_originオプションで追加できます。デフォルトはlocalapps。このオプションは--
setting_fileで指定される設定ファイルよりも優先されます。
--allow_origin [ALLOW_ORIGIN ...]
許可するオリジンを指定します。スペースで区切ることで複数指定できます。このオプションは--setting_fileで指定される設定ファイルよりも優先されます。
--setting_file SETTING_FILE
設定ファイルを指定できます。
--preset_file PRESET_FILE
プリセットファイルを指定できます。指定がない場合、環境変数 VV_PRESET_FILE、ユーザーディレクトリのpresets.yamlを順に探します。
--disable_mutable_api
辞書登録や設定変更など、エンジンの静的なデータを変更するAPIを無効化します。指定しない場合、代わりに環境変数 VV_DISABLE_MUTABLE_API の値が使われます。VV_DISABLE_MUTABLE_API の値が1の場合は無効化で、0または空文字、値がない場合は無視されます。エンジンディレクトリ内にあるファイルを全て消去し、新しいものに置き換えてください。
VOICEVOX ENGINE は皆さんのコントリビューションをお待ちしています!
詳細は CONTRIBUTING.md をご覧ください。
また VOICEVOX 非公式 Discord サーバーにて、開発の議論や雑談を行っています。気軽にご参加ください。
なお、Issue を解決するプルリクエストを作成される際は、別の方と同じ Issue に取り組むことを避けるため、Issue 側で取り組み始めたことを伝えるか、最初に Draft プルリクエストを作成することを推奨しています。
Python 3.11.9を用いて開発されています。 インストールするには、各 OS ごとの C/C++ コンパイラ、CMake が必要になります。
# 実行環境のインストール
python -m pip install -r requirements.txt
# 開発環境・テスト環境・ビルド環境のインストール
python -m pip install -r requirements-dev.txt -r requirements-build.txtコマンドライン引数の詳細は以下のコマンドで確認してください。
python run.py --help # 製品版 VOICEVOX でサーバーを起動
VOICEVOX_DIR= " C:/path/to/voicevox " # 製品版 VOICEVOX ディレクトリのパス
python run.py --voicevox_dir= $VOICEVOX_DIR # モックでサーバー起動
python run.py --enable_mock # ログをUTF8に変更
python run.py --output_log_utf8
# もしくは VV_OUTPUT_LOG_UTF8=1 python run.py CPU スレッド数が未指定の場合は、論理コア数の半分が使われます。(殆どの CPU で、これは全体の処理能力の半分です)
もし IaaS 上で実行していたり、専用サーバーで実行している場合など、
エンジンが使う処理能力を調節したい場合は、CPU スレッド数を指定することで実現できます。
python run.py --voicevox_dir= $VOICEVOX_DIR --cpu_num_threads=4 export VV_CPU_NUM_THREADS=4
python run.py --voicevox_dir= $VOICEVOX_DIR VOICEVOX Core 0.5.4 以降のコアを使用する事が可能です。
Mac での libtorch 版コアのサポートはしていません。
製品版 VOICEVOX もしくはコンパイル済みエンジンのディレクトリを--voicevox_dir引数で指定すると、そのバージョンのコアが使用されます。
python run.py --voicevox_dir= " /path/to/voicevox " Mac では、 DYLD_LIBRARY_PATHの指定が必要です。
DYLD_LIBRARY_PATH= " /path/to/voicevox " python run.py --voicevox_dir= " /path/to/voicevox " VOICEVOX Core の zip ファイルを解凍したディレクトリを--voicelib_dir引数で指定します。
また、コアのバージョンに合わせて、libtorchやonnxruntime (共有ライブラリ) のディレクトリを--runtime_dir引数で指定します。
ただし、システムの探索パス上に libtorch、onnxruntime がある場合、 --runtime_dir引数の指定は不要です。
--voicelib_dir引数、 --runtime_dir引数は複数回使用可能です。
API エンドポイントでコアのバージョンを指定する場合はcore_version引数を指定してください。(未指定の場合は最新のコアが使用されます)
python run.py --voicelib_dir= " /path/to/voicevox_core " --runtime_dir= " /path/to/libtorch_or_onnx " Mac では、 --runtime_dir引数の代わりにDYLD_LIBRARY_PATHの指定が必要です。
DYLD_LIBRARY_PATH= " /path/to/onnx " python run.py --voicelib_dir= " /path/to/voicevox_core " 以下のディレクトリにある音声ライブラリは自動で読み込まれます。
<user_data_dir>/voicevox-engine/core_libraries/<user_data_dir>/voicevox-engine-dev/core_libraries/ <user_data_dir>は OS によって異なります。
C:Users<username>AppDataLocal/Users/<username>/Library/Application Support//home/<username>/.local/share/ pyinstallerを用いたパッケージ化と Dockerfile を用いたコンテナ化によりローカルでビルドが可能です。
手順の詳細は 貢献者ガイド#ビルド を御覧ください。
GitHub を用いる場合、fork したリポジトリで GitHub Actions によるビルドが可能です。
Actions を ON にし、workflow_dispatch でbuild-engine-package.ymlを起動すればビルドできます。 成果物は Release にアップロードされます。 ビルドに必要な GitHub Actions の設定は 貢献者ガイド#GitHub Actions を御覧ください。
pytestを用いたテストと各種リンターを用いた静的解析が可能です。
手順の詳細は 貢献者ガイド#テスト, 貢献者ガイド#静的解析 を御覧ください。
依存関係はpoetryで管理されています。また、導入可能な依存ライブラリにはライセンス上の制約があります。
詳細は 貢献者ガイド#パッケージ を御覧ください。
VOICEVOX エディターでは、複数のエンジンを同時に起動することができます。 この機能を利用することで、自作の音声合成エンジンや既存の音声合成エンジンを VOICEVOX エディター上で動かすことが可能です。
VOICEVOX API に準拠した複数のエンジンの Web API をポートを分けて起動し、統一的に扱うことでマルチエンジン機能を実現しています。 エディターがそれぞれのエンジンを実行バイナリ経由で起動し、EngineID と結びつけて設定や状態を個別管理します。
VOICEVOX API 準拠エンジンを起動する実行バイナリを作ることで対応が可能です。 VOICEVOX ENGINE リポジトリを fork し、一部の機能を改造するのが簡単です。
改造すべき点はエンジン情報・キャラクター情報・音声合成の3点です。
エンジンの情報はルート直下のマニフェストファイル( engine_manifest.json )で管理されています。 この形式のマニフェストファイルは VOICEVOX API 準拠エンジンに必須です。 マニフェストファイル内の情報を見て適宜変更してください。 音声合成手法によっては、例えばモーフィング機能など、VOICEVOX と同じ機能を持つことができない場合があります。 その場合はマニフェストファイル内のsupported_features内の情報を適宜変更してください。
キャラクター情報はresources/character_infoディレクトリ内のファイルで管理されています。 ダミーのアイコンなどが用意されているので適宜変更してください。
音声合成はvoicevox_engine/tts_pipeline/tts_engine.pyで行われています。 VOICEVOX API での音声合成は、エンジン側で音声合成用のクエリAudioQueryの初期値を作成してユーザーに返し、ユーザーが必要に応じてクエリを編集したあと、エンジンがクエリに従って音声合成することで実現しています。 クエリ作成は/audio_queryエンドポイントで、音声合成は/synthesisエンドポイントで行っており、最低この2つに対応すれば VOICEVOX API に準拠したことになります。
VVPP ファイルとして配布するのがおすすめです。 VVPP は「VOICEVOX プラグインパッケージ」の略で、中身はビルドしたエンジンなどを含んだディレクトリの Zip ファイルです。 拡張子を.vvppにすると、ダブルクリックで VOICEVOX エディターにインストールできます。
エディター側は受け取った VVPP ファイルをローカルディスク上に Zip 展開したあと、ルートの直下にあるengine_manifest.jsonに従ってファイルを探査します。 VOICEVOX エディターにうまく読み込ませられないときは、エディターのエラーログを参照してください。
また、 xxx.vvppは分割して連番を付けたxxx.0.vvpppファイルとして配布することも可能です。 これはファイル容量が大きくて配布が困難な場合に有用です。 インストールに必要なvvppおよびvvpppファイルはvvpp.txtファイルにリストアップしています。
voicevox-client @voicevox-client ・・・ VOICEVOX ENGINE の各言語向け API ラッパー
LGPL v3 と、ソースコードの公開が不要な別ライセンスのデュアルライセンスです。 別ライセンスを取得したい場合は、ヒホに求めてください。
X アカウント: @hiho_karuta