- เครื่องยนต์ aivisspeech: ai v oice i mitation s ystem - text to Speech Engine
เครื่องยนต์ Aivisspeech เป็นเครื่องยนต์สังเคราะห์คำพูดของญี่ปุ่นที่ใช้เครื่องยนต์ Voicevox
มันถูกสร้างขึ้นใน Aivisspeech ซอฟต์แวร์การสังเคราะห์คำพูดของญี่ปุ่นและสามารถสร้างเสียงทางอารมณ์ได้อย่างง่ายดาย
AudioQueryMora เปลี่ยนไปPresetหากคุณต้องการใช้ Aivisspeech กรุณาเยี่ยมชมเว็บไซต์ทางการของ Aivisspeech
หน้านี้มีข้อมูลส่วนใหญ่สำหรับนักพัฒนา
ด้านล่างเป็นเอกสารสำหรับผู้ใช้:
เข้ากันได้กับพีซีกับ Windows, MacOS และ Linux
ในการเริ่มเครื่องยนต์ Aivisspeech พีซีของคุณต้องการหน่วยความจำฟรีอย่างน้อย 3GB (RAM)
เคล็ดลับ
แอพเดสก์ท็อป Aivisspeech รองรับบน Windows และ MacOS เท่านั้น
ในขณะเดียวกันเอ็นจิน AIVISSPEECH ซึ่งเป็นเซิร์ฟเวอร์ API การสังเคราะห์คำพูดก็พร้อมใช้งานสำหรับ Ubuntu/Debian Linux
บันทึก
เรายังไม่ได้ตรวจสอบการดำเนินการบน MACs ด้วย Intel CPU
Macs ที่มีซีพียู Intel ไม่ได้ผลิตอยู่แล้วและมันก็ยากที่จะเตรียมการตรวจสอบและสร้างสภาพแวดล้อม เราขอแนะนำให้ใช้ผลิตภัณฑ์นี้บน Mac กับ Apple Silicon ให้มากที่สุด
คำเตือน
บน Windows 10 เราจะตรวจสอบการทำงานของเวอร์ชัน 22H2 เท่านั้น
มีรายงานกรณีที่เครื่องยนต์ Aivisspeech ขัดข้องและไม่สามารถเริ่มต้นใน Windows 10 รุ่นเก่าที่ไม่มีการสนับสนุน
จากมุมมองด้านความปลอดภัยเราขอแนะนำอย่างยิ่งให้คุณใช้สภาพแวดล้อมของ Windows 10 จะอัปเดตเฉพาะรุ่นขั้นต่ำ 22H2 ก่อนที่จะใช้บริการ
เครื่องยนต์ Aivisspeech รองรับไฟล์โมเดลการสังเคราะห์คำพูดในรูปแบบ AIVMX ( ai vis v oice m odel สำหรับ onn x ) ( .aivmx ) รูปแบบ
aivm ( ai vis v oice m odel) / aivmx ( ai vis v oice m odel สำหรับ onn x ) เป็นรูปแบบไฟล์เปิดสำหรับโมเดลการสังเคราะห์คำพูด AI ที่รวมโมเดลที่ผ่านการฝึกอบรมมาก่อน hyperparameters สไตล์เวกเตอร์
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับข้อกำหนดของ AIVM และไฟล์ AIVM/AIVMX โปรดดู ข้อมูลจำเพาะ AIVM ที่พัฒนาขึ้นในโครงการ AIVIS
บันทึก
"AIVM" ยังเป็นคำทั่วไปสำหรับข้อกำหนดรูปแบบ AIVM/AIVMX และข้อกำหนดข้อมูลเมตา
โดยเฉพาะไฟล์ AIVM เป็นไฟล์โมเดลใน "Safetensors Format with AIVM Metadata ที่เพิ่มเข้ามา" และไฟล์ AIVMX เป็นไฟล์รุ่นใน "รูปแบบ ONNX พร้อม AIVM Metadata ที่เพิ่มเข้ามา"
"AIVM Metadata" หมายถึงข้อมูลเมตาต่าง ๆ ที่เชื่อมโยงกับแบบจำลองที่ผ่านการฝึกอบรมตามที่กำหนดไว้ในข้อกำหนด AIVM
สำคัญ
เอ็นจิน AIVISSPEECH ยังเป็นการใช้ข้อมูลอ้างอิงของข้อกำหนด AIVM แต่ได้รับการออกแบบมาโดยเจตนาเพื่อรองรับไฟล์ AIVMX เท่านั้น
สิ่งนี้จะช่วยลดการพึ่งพา pytorch ลดขนาดการติดตั้งและให้การอนุมาน CPU อย่างรวดเร็วด้วยรันไทม์ ONNX
เคล็ดลับ
เครื่องกำเนิด AIVM ช่วยให้คุณสามารถสร้างไฟล์ AIVM/AIVMX จากโมเดลการสังเคราะห์คำพูดที่มีอยู่และแก้ไขข้อมูลเมตาของไฟล์ AIVM/AIVMX ที่มีอยู่!
ไฟล์ AIVMX สำหรับสถาปัตยกรรมรุ่นต่อไปนี้มีอยู่:
Style-Bert-VITS2Style-Bert-VITS2 (JP-Extra) บันทึก
ข้อกำหนดข้อมูลเมตาของ AIVM ช่วยให้คุณสามารถกำหนดลำโพงหลายภาษาได้ แต่เครื่องยนต์ AIVISSPEEK เช่นเครื่องยนต์ VOICEVOX รองรับการสังเคราะห์คำพูดของญี่ปุ่นเท่านั้น
ดังนั้นแม้ว่าคุณจะใช้รูปแบบการสังเคราะห์คำพูดที่สนับสนุนภาษาอังกฤษหรือภาษาจีนการสังเคราะห์คำพูดนอกเหนือจากภาษาญี่ปุ่นไม่สามารถทำได้
วางไฟล์ AIVMX ในโฟลเดอร์ต่อไปนี้สำหรับแต่ละระบบปฏิบัติการ:
C:Users(ユーザー名)AppDataRoamingAivisSpeech-EngineModels~/Library/Application Support/AivisSpeech-Engine/Models~/.local/share/AivisSpeech-Engine/Models เส้นทางโฟลเดอร์จริงจะแสดงเป็น Models directory: ในบันทึกทันทีหลังจากเริ่มเครื่องยนต์ Aivisspeech
เคล็ดลับ
เมื่อใช้ aivisspeech คุณสามารถเพิ่มโมเดลการสังเคราะห์คำพูดได้อย่างง่ายดายจากหน้าจอ Aivisspeech UI!
สำหรับผู้ใช้ปลายทางเราขอแนะนำให้คุณเพิ่มโมเดลการสังเคราะห์คำพูดโดยใช้วิธีนี้
สำคัญ
โฟลเดอร์การปรับใช้สำหรับเวอร์ชันการพัฒนา (หากทำงานโดยไม่ถูกสร้างขึ้นด้วย Pyinstaller) ไม่ใช่ AivisSpeech-Engine หรือต่ำกว่า AivisSpeech-Engine-Dev
เอ็นจิน AIVISSPEECH มีตัวเลือกบรรทัดคำสั่งที่มีประโยชน์เช่น:
--host 0.0.0.0 ช่วยให้สามารถเข้าถึงเอ็นจิ้น Aivisspeech จากอุปกรณ์อื่น ๆ ในเครือข่ายเดียวกัน--cors_policy_mode all เพื่ออนุญาตการร้องขอ CORS จากโดเมนทั้งหมด--load_all_models เพื่อโหลดโมเดลการสังเคราะห์คำพูดที่ติดตั้งไว้ล่วงหน้าทั้งหมดเมื่อเครื่องยนต์ Aivisspeech เริ่มต้นขึ้น--help เพื่อแสดงรายการและคำอธิบายของตัวเลือกที่มีอยู่ทั้งหมด มีตัวเลือกอื่น ๆ อีกมากมาย สำหรับรายละเอียดโปรดดูตัวเลือก --help
เคล็ดลับ
เมื่อดำเนินการกับตัวเลือก --use_gpu มันสามารถใช้ directML ใน Windows และ Nvidia GPU (CUDA) บน Linux สำหรับการสังเคราะห์คำพูดความเร็วสูง
นอกจากนี้ในสภาพแวดล้อมของ Windows การอนุมาน directML สามารถทำได้บนพีซีที่มีเพียง GPU (IGPUs) ที่มีซีพียูในตัว แต่ในกรณีส่วนใหญ่มันช้ากว่าการอนุมาน CPU มากดังนั้นจึงไม่แนะนำ
สำหรับข้อมูลเพิ่มเติมดูคำถามที่พบบ่อย
บันทึก
เอ็นจิน AIVISSPEEK ทำงานกับหมายเลขพอร์ต 10101 โดยค่าเริ่มต้น
หากขัดแย้งกับแอปพลิเคชันอื่น ๆ คุณสามารถเปลี่ยนเป็นหมายเลขพอร์ตใด ๆ โดยใช้ตัวเลือก --port
คำเตือน
ซึ่งแตกต่างจากเครื่องยนต์ Voicevox ตัวเลือกบางอย่างไม่ได้ถูกนำไปใช้ในเครื่องยนต์ Aivisspeech
บน Windows/MacOS คุณสามารถติดตั้งเครื่องยนต์ Aivisspeech ด้วยตัวเอง แต่มันง่ายกว่าที่จะเริ่มเครื่องยนต์ Aivisspeech ซึ่งมาพร้อมกับคอนโซล Aivisspeech ด้วยตัวเอง
พา ธ ไปยังไฟล์ปฏิบัติการ AIVISSPEECH Engine ( run.exe / run ) ที่จัดส่งด้วย aivisspeech มีดังนี้:
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 บันทึก
รุ่นเริ่มต้น (ประมาณ 250MB) และรุ่น BERT (ประมาณ 1.3GB) ที่จำเป็นสำหรับการอนุมานจะถูกดาวน์โหลดโดยอัตโนมัติเมื่อเริ่มต้นครั้งแรกดังนั้นจะใช้เวลาไม่กี่นาทีสำหรับการเริ่มต้น
โปรดรอสักครู่จนกว่าการเริ่มต้นจะเสร็จสมบูรณ์
หากต้องการเพิ่มโมเดลการสังเคราะห์คำพูดให้กับเอ็นจิ้น aivisspeech ดูที่จะวางไฟล์โมเดล
นอกจากนี้คุณยังสามารถเพิ่มได้โดยคลิก "การตั้งค่า"> "จัดการโมเดลการสังเคราะห์คำพูด" ใน Aivisspeech
เมื่อทำงานในสภาพแวดล้อม Linux + Nvidia GPU รุ่น CUDA/CUDNN ที่ ONNX Runtime รองรับจะต้องตรงกับเวอร์ชัน CUDA/CUDNN ของสภาพแวดล้อมโฮสต์และสภาพการทำงานนั้นเข้มงวด
โดยเฉพาะอย่างยิ่งรันไทม์ ONNX ที่ใช้โดยเครื่องยนต์ AIVISSPEEK ต้องใช้ CUDA 12.X / CUDNN 9.X หรือสูงกว่า
Docker Works โดยไม่คำนึงถึงสภาพแวดล้อมของโฮสต์ OS ดังนั้นเราขอแนะนำให้ติดตั้งด้วย Docker
เมื่อเรียกใช้คอนเทนเนอร์ Docker ให้ติดตั้ง ~/.local/share/AivisSpeech-Engine เสมอไปที่ /home/user/.local/share/AivisSpeech-Engine-Dev ในคอนเทนเนอร์
ด้วยวิธีนี้แม้หลังจากที่คุณหยุดหรือรีสตาร์ทคอนเทนเนอร์คุณยังสามารถรักษาโมเดลการสังเคราะห์คำพูดที่ติดตั้งและแคชโมเดลเบิร์ต (ประมาณ 1.3GB)
ในการเพิ่มโมเดลการสังเคราะห์คำพูดให้กับเอ็นจิน AIVISSPEECH ในสภาพแวดล้อม Docker ให้วางไฟล์โมเดล (.aiVMX) ภายใต้ ~/.local/share/AivisSpeech-Engine/Models ในสภาพแวดล้อมโฮสต์
สำคัญ
อย่าลืมติดตั้งกับ /home/user/.local/share/AivisSpeech-Engine-Dev
เนื่องจากเอ็นจิ้น aivisspeech บนอิมเมจ Docker ไม่ได้ถูกสร้างขึ้นด้วย Pyinstaller ชื่อโฟลเดอร์ข้อมูลจึงได้รับคำต่อท้ายของ -Dev และ 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 เมื่อคุณเรียกใช้หนึ่งสายการบินต่อไปนี้ใน BASH ไฟล์ WAV ที่สังเคราะห์ได้จะถูกส่งออกไปยัง audio.wav
สำคัญ
สันนิษฐานว่าเอ็นจิ้น Aivisspeech ได้เริ่มต้นล่วงหน้าและ Models directory: ไดเรกทอรีต่อไปนี้มีโมเดลการสังเคราะห์คำพูด (.aiVMX) ที่สอดคล้องกับรหัสสไตล์
# 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.jsonเคล็ดลับ
สำหรับการร้องขอ API โดยละเอียดและข้อกำหนดการตอบสนองโปรดดูเอกสาร API และความเข้ากันได้กับ VoICEVOX API เอกสาร API สะท้อนให้เห็นถึงการเปลี่ยนแปลงในเวอร์ชันการพัฒนาล่าสุด
คุณสามารถดูเอกสาร API (Swagger UI) สำหรับเอ็นจิ้น AIVISSPEEK ที่ใช้งานได้โดยการเข้าถึง http://127.0.0.1:10101/docs ด้วยเครื่องยนต์ Aivisspeech หรือโปรแกรมแก้ไข Aivisspeech กำลังดำเนินการ
เครื่องยนต์ Aivisspeech โดยทั่วไปเข้ากันได้กับ HTTP API ของเครื่องยนต์ Voicevox
หากคุณมีซอฟต์แวร์ที่รองรับ HTTP API ของ VoICEEVOX Engine คุณควรจะสามารถรองรับ AIVISSPEEK Engine โดยเพียงแค่เปลี่ยน URL API ด้วย http://127.0.0.1:10101
สำคัญ
อย่างไรก็ตามหากคุณแก้ไขเนื้อหา AudioQuery ที่ได้จาก /audio_query API บนไคลเอนต์ API แล้วส่งไปยัง /synthesis มันอาจเป็นไปไม่ได้ที่จะสังเคราะห์คำพูดอย่างถูกต้องเนื่องจากความแตกต่างในข้อมูลจำเพาะ (ดูด้านล่าง)
ด้วยเหตุนี้ ตัวแก้ไข aivisspeech สามารถใช้ทั้งเครื่องยนต์ Aivisspeech และเครื่องยนต์ VoiceVox (เมื่อใช้ฟังก์ชั่นหลายเครื่องยนต์) แต่คุณไม่สามารถใช้เครื่องยนต์ Aivisspeech จากตัวแก้ไข VoICEVOX
การใช้เอ็นจิ้น aivisspeech ในตัวแก้ไข VoICEVOX ช่วยลดคุณภาพของการสังเคราะห์เสียงพูดอย่างมีนัยสำคัญเนื่องจากข้อ จำกัด ในการดำเนินการแก้ไข นอกเหนือจากการไม่สามารถใช้พารามิเตอร์ที่ไม่ซ้ำกันของเอ็นจิ้น aivisspeech แล้วยังมีความเป็นไปได้ที่ข้อผิดพลาดอาจเกิดขึ้นเมื่อเรียกฟังก์ชั่นที่ไม่เข้ากันได้
เราขอแนะนำให้ใช้มันกับโปรแกรมแก้ไข Aivisspeech เพื่อให้ได้ผลลัพธ์การสังเคราะห์คำพูดที่ดีขึ้น
บันทึก
แม้ว่าโดยทั่วไปควรเข้ากันได้ในกรณีการใช้ API ทั่วไป แต่อาจมี APIs ที่เข้ากันไม่ได้นอกเหนือจากต่อไปนี้เนื่องจากระบบการสังเคราะห์เสียงพูดที่มีสถาปัตยกรรมแบบจำลองที่แตกต่างกันโดยพื้นฐานจะถูกบังคับให้รวมอยู่ในข้อกำหนด API เดียวกัน
หากคุณรายงานผ่านปัญหาเราจะแก้ไขการปรับปรุงความเข้ากันได้ใด ๆ
ต่อไปนี้คือการเปลี่ยนแปลงข้อกำหนด API จากเครื่องยนต์ VoiceVox:
รหัสท้องถิ่นสไตล์ลำโพงในรายการ AIVM ที่มีอยู่ในไฟล์ AIVMX ได้รับการจัดการในหมายเลขซีเรียลเริ่มต้นที่ 0 สำหรับลำโพงแต่ละตัว
ในรูปแบบการสังเคราะห์คำพูดของสถาปัตยกรรม Style-Bert-VITS2 ค่านี้ตรงกับค่าของ data.style2id hyperparameter ของโมเดล Style2id
ในทางกลับกัน API ของ Voicevox Engine ไม่ได้ระบุลำโพง UUID ( speaker_uuid ) และเฉพาะ ID สไตล์ ( style_id ) เท่านั้นที่ส่งผ่านไปยัง API การสังเคราะห์คำพูดอาจเป็นเพราะเหตุผลทางประวัติศาสตร์
Voicevox Engine มีลำโพงและสไตล์ที่แก้ไขแล้วดังนั้นทีมพัฒนาจึงสามารถจัดการ "รหัสสไตล์" ได้โดยเฉพาะ
ในขณะเดียวกันเอ็นจิ้น AivissPeech ช่วยให้ผู้ใช้สามารถเพิ่มโมเดลการสังเคราะห์เสียงพูดได้อย่างอิสระ
ดังนั้น "รหัสสไตล์" ของ VoICEVOX API จะต้องไม่ซ้ำกันไม่ว่าแบบจำลองการสังเคราะห์คำพูดจะถูกเพิ่มเข้ามา
นี่เป็นเพราะหากค่าไม่ซ้ำกันรูปแบบลำโพงและรูปแบบรหัสที่รวมอยู่ในโมเดลที่มีอยู่สามารถทับซ้อนกันได้เมื่อมีการเพิ่มโมเดลการสังเคราะห์คำพูดใหม่
ดังนั้นเครื่องยนต์ Aivisspeech รวม ID UUID และรูปแบบ ID บน AIVM Manifest เพื่อสร้าง "สไตล์" สไตล์ "ที่เป็นเอกลักษณ์ทั่วโลกที่เข้ากันได้กับ VoICEVOX API
วิธีการสร้างเฉพาะมีดังนี้:
คำเตือน
ด้วยเหตุนี้ ปัญหาที่ไม่คาดคิดอาจเกิดขึ้นได้กับซอฟต์แวร์ที่เปิดใช้งาน VoiceVox API ซึ่งไม่ได้คิดว่าจำนวนเต็มที่ลงนาม 32 บิตรวมอยู่ใน "รหัสสไตล์"
คำเตือน
มันเป็นความน่าจะเป็นต่ำมากที่ ID สไตล์ลำโพงที่แตกต่างกันสามารถทับซ้อนกัน (การชน) เพราะพวกเขากำลังเสียสละความเป็นเอกลักษณ์ทั่วโลกของลำโพง UUIDS เพื่อให้พอดีกับช่วงจำนวนเต็มที่ลงนาม 32 บิต
ณ จุดนี้ไม่มีวิธีแก้ปัญหาสำหรับรหัสสไตล์ที่ซ้ำกัน แต่ในความเป็นจริงนี่ไม่ใช่ปัญหาในกรณีส่วนใหญ่
เคล็ดลับ
VOICEVOX API "ids ids" ที่สร้างขึ้นโดยอัตโนมัติโดยเครื่องยนต์ aivisspeech สามารถรับได้จาก /speakers API
API นี้ส่งคืนรายการข้อมูลลำโพงที่ติดตั้งบนเอ็นจิน AIVISSPEECH
AudioQuery AudioQuery Type เป็นแบบสอบถามสำหรับทำการสังเคราะห์คำพูดโดยการระบุลำดับข้อความหรือลำดับฟอนิม
การเปลี่ยนแปลงหลักจากประเภท AudioQuery ในเครื่องยนต์ VoICEVOX มีดังนี้:
intonationScale นั้นแตกต่างกันintonationScale ในเครื่องยนต์ Aivisspeech:intonationScale เป็น 0.0 ถึง 1.0, Style-Bert-VITS2 สอดคล้องกับช่วง 0.0 ถึง 1.0intonationScale คือ 1.0 ถึง 2.0, Style-Bert-VITS2 สอดคล้องกับช่วง 1.0 ถึง 10.0tempoDynamicsScale ด้วยตัวเองtempoDynamicsScale ในเครื่องยนต์ Aivisspeech:tempoDynamicsScale คือ 0.0 ถึง 1.0, Style-Bert-VITS2 สอดคล้องกับช่วง 0.0 ถึง 0.2tempoDynamicsScale คือ 1.0 ถึง 2.0, Style-Bert-VITS2 สอดคล้องกับช่วง 0.2 ถึง 1.0pitchScale นั้นแตกต่างกันpauseLength และ pauseLengthScalekana นั้นแตกต่างกันสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงดู model.py
Mora เปลี่ยนไป ประเภท Mora เป็นโครงสร้างข้อมูลที่แสดงถึง maura ของข้อความพูด
เคล็ดลับ
โมราเป็นหน่วยที่เล็กที่สุดของการจัดกลุ่มเสียงเมื่อออกเสียงจริง (เช่น "A", "KA" หรือ "O")
ประเภท Mora ไม่ได้ใช้เพียงอย่างเดียวสำหรับการตอบสนองการร้องขอ API และมักจะใช้ทางอ้อมผ่าน AudioQuery.accent_phrases[n].moras หรือ AudioQuery.accent_phrases[n].pause_mora
การเปลี่ยนแปลงหลักจากประเภท Mora ในเครื่องยนต์ Voicevox มีดังนี้:
pause_mora แต่ในเครื่องยนต์ aivisspeech มันถือว่าเป็นโมราปกติtext เป็นสัญลักษณ์เดียวกันและ vowel ถูกตั้งค่าเป็น "pau"consonant / vowel เป็นแบบอ่านอย่างเดียวtext จะใช้ในการอ่านข้อความในระหว่างการสังเคราะห์คำพูดเสมอconsonant_length / vowel_length / pitch fieldสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงดู TTS_PIPELINE/MODEL.PY
Preset ประเภท Preset เป็นข้อมูลที่ตั้งไว้ล่วงหน้าสำหรับการกำหนดค่าเริ่มต้นของแบบสอบถามการสังเคราะห์คำพูดบนตัวแก้ไข
การเปลี่ยนแปลงโดยทั่วไปสอดคล้องกับการเปลี่ยนแปลงในข้อกำหนดของฟิลด์สำหรับ intonationScale / tempoDynamicsScale / pitchScale / pauseLength / pauseLengthScale ที่อธิบายไว้ในประเภท AudioQuery
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงโปรดดูที่ preset/model.py
คำเตือน
ไม่สนับสนุนการร้องเพลงและการสังเคราะห์คำพูดที่ยกเลิกได้
มันมีอยู่เป็นจุดสิ้นสุดสำหรับวัตถุประสงค์ความเข้ากันได้ แต่จะส่งคืน 501 Not Implemented เสมอ
สำหรับข้อมูลเพิ่มเติมโปรดตรวจสอบแอป/เราเตอร์/character.py/app/เราเตอร์/tts_pipeline.py
/singers/singer_info/cancellable_synthesis/sing_frame_audio_query/sing_frame_volume/frame_synthesis คำเตือน
API /synthesis_morphing API ที่ให้ฟังก์ชั่น morphing ไม่ได้รับการสนับสนุน
เนื่องจากเวลาเสียงแตกต่างกันไปสำหรับผู้พูดแต่ละคนจึงเป็นไปไม่ได้ที่จะนำไปใช้ (ใช้งานได้ แต่ไม่สามารถยืนฟังได้) ดังนั้น 400 Bad Request จึงถูกส่งคืนเสมอ
ส่งคืนไม่ว่าจะมี morphing สำหรับลำโพงแต่ละตัว /morphable_targets API disallows morphing สำหรับลำโพงทั้งหมด
สำหรับข้อมูลเพิ่มเติมโปรดตรวจสอบแอพ/เราเตอร์/morphing.py
/synthesis_morphing/morphable_targetsคำเตือน
มันมีอยู่เป็นพารามิเตอร์สำหรับวัตถุประสงค์ความเข้ากันได้ แต่จะถูกละเว้นเสมอ
สำหรับข้อมูลเพิ่มเติมโปรดตรวจสอบแอป/เราเตอร์/character.py/app/เราเตอร์/tts_pipeline.py
core_versionenable_interrogative_upspeak พารามิเตอร์どうですか…? เพียงเพิ่ม "?" ในตอนท้ายของข้อความเพื่ออ่านออกเสียงเช่นนี้และคุณสามารถอ่านได้ด้วยน้ำเสียงที่น่าสงสัย เคล็ดลับ
โปรดดูที่คำถามที่พบบ่อยของบรรณาธิการ Aivisspeech/Q&A
intonationScale ) จะทำให้เกิดคำพูด นี่คือข้อกำหนดในปัจจุบันของสถาปัตยกรรมแบบสไตล์-เบิร์ต-VITS2 ที่รองรับโดยเครื่องยนต์ Aivisspeech
ขึ้นอยู่กับลำโพงและสไตล์ถ้าคุณยก intonationScale มากเกินไปเสียงของคุณอาจกลายเป็นเรื่องแปลกหรือคุณอาจจบลงด้วยการอ่านเสียงที่ผิดธรรมชาติ
ขีด จำกัด สูงสุดของค่า intonationScale ที่ช่วยให้คุณพูดได้อย่างถูกต้องจะแตกต่างกันไปขึ้นอยู่กับลำโพงและสไตล์ ปรับค่าอย่างเหมาะสม
ที่เอ็นจิ้น Aivisspeech เราพยายามตรวจสอบให้แน่ใจว่าการอ่านและสำเนียงที่ถูกต้องนั้นถูกต้องในครั้งเดียว แต่มีบางครั้งที่มันหลีกเลี่ยงไม่ได้ว่ามันไม่ถูกต้อง
คำที่ไม่ได้ลงทะเบียนในพจนานุกรมในตัวเช่นคำนามที่เหมาะสมและชื่อของผู้คน (โดยเฉพาะชื่อประกาย) มักจะอ่านไม่ถูกต้อง
คุณสามารถเปลี่ยนวิธีการอ่านคำเหล่านี้โดยการลงทะเบียนพจนานุกรม ลองลงทะเบียนคำศัพท์จากโปรแกรมแก้ไข Aivisspeech หรือ API
นอกจากนี้สำหรับคำผสมและคำภาษาอังกฤษเนื้อหาที่ลงทะเบียนในพจนานุกรมอาจไม่สะท้อนให้เห็นโดยไม่คำนึงถึงความสำคัญของคำ นี่คือข้อกำหนดปัจจุบัน
เอ็นจิ้น Aivisspeech ได้รับการออกแบบมาเพื่อสังเคราะห์คำพูดในประโยคที่ค่อนข้างสั้นเช่นประโยคหรือการจัดกลุ่มความหมาย
ดังนั้นการส่งประโยคยาวที่เกิน 1,000 อักขระในครั้งเดียวไปยัง /synthesis API อาจทำให้เกิดปัญหาเช่นดังต่อไปนี้:
เมื่อสังเคราะห์ประโยคยาวเราขอแนะนำให้แยกประโยคที่ตำแหน่งต่อไปนี้และส่งพวกเขาไปยัง API การสังเคราะห์คำพูด
ไม่มีขีด จำกัด ที่ยาก แต่เป็นที่พึงปรารถนาที่จะมีอักขระสูงสุด 500 ตัวต่อการสังเคราะห์การพูด
เคล็ดลับ
การหารประโยคด้วยการหยุดความหมายมีแนวโน้มที่จะสร้างเสียงน้ำเสียงที่เป็นธรรมชาติมากขึ้น
นี่เป็นเพราะการแสดงออกทางอารมณ์และน้ำเสียงที่สอดคล้องกับเนื้อหาของข้อความถูกนำไปใช้กับประโยคทั้งหมดที่ส่งไปยัง API การสังเคราะห์คำพูดในครั้งเดียว
โดยการแบ่งประโยคอย่างเหมาะสมคุณสามารถรีเซ็ตการแสดงออกทางอารมณ์และการเรียนรู้ของแต่ละประโยคทำให้การอ่านเป็นธรรมชาติมากขึ้น
จำเป็นต้องมีการเข้าถึงอินเทอร์เน็ตเฉพาะเมื่อเริ่มต้น aivisspeech เป็นครั้งแรกเนื่องจากดาวน์โหลดข้อมูลรุ่น
คุณสามารถใช้พีซีออฟไลน์ในการบูตครั้งที่สองหรือใหม่กว่า
สามารถทำได้บนหน้าจอการกำหนดค่าเอ็นจิ้น Aivisspeech ที่กำลังทำงานอยู่
เมื่อคุณเข้าถึง http://127.0.0.1:[AivisSpeech Engine のポート番号]/setting จากเบราว์เซอร์ของคุณในขณะที่เริ่มเครื่องยนต์ AIVISSPEECH หน้าจอการกำหนดค่าเครื่องยนต์ AIVISSPEECH จะเปิดขึ้น
หมายเลขพอร์ตเริ่มต้นสำหรับเอ็นจิน AIVISSPEEK คือ 10101
--use_gpu ) และยังคงให้เสียงช้ากว่าโหมด CPUโหมด GPU สามารถใช้กับพีซีที่มี CPU ในตัว (IGPU) เท่านั้น แต่ในกรณีส่วนใหญ่มันช้ากว่าโหมด CPU มากดังนั้นจึงไม่แนะนำ
นี่เป็นเพราะ GPU ที่มี CPU ในตัวมีประสิทธิภาพต่ำกว่า GPU อิสระ (DGPUs) และไม่ดีในการประมวลผลหนักเช่นการสังเคราะห์คำพูด AI
ในทางกลับกันประสิทธิภาพของซีพียูในวันนี้ได้รับการปรับปรุงอย่างมีนัยสำคัญและ CPU เพียงอย่างเดียวสามารถสร้างเสียงด้วยความเร็วสูง
ดังนั้นเราขอแนะนำให้ใช้โหมด CPU บนพีซีที่ไม่มี DGPU
หากคุณใช้พีซีที่มี CPU รุ่นที่ 12 หรือใหม่ของ Intel (การกำหนดค่า P-Core/E-core Hybrid) ประสิทธิภาพของการสร้างเสียงสามารถเปลี่ยนแปลงได้อย่างมากขึ้นอยู่กับการตั้งค่าพลังงานของ Windows
นี่เป็นเพราะโหมด "ยอดคงเหลือ" เริ่มต้นทำให้งานสร้างเสียงได้ง่ายขึ้นในการจัดทำ E-cores ประหยัดพลังงาน
เปลี่ยนการตั้งค่าโดยใช้ขั้นตอนด้านล่างเพื่อใช้ประโยชน์สูงสุดจากแกน P และ E และสร้างเสียงได้เร็วขึ้น
*"แผนพลังงาน" ในแผงควบคุมยังมีการตั้งค่า "ประสิทธิภาพสูง" แต่การตั้งค่าแตกต่างกัน
สำหรับ Intel รุ่นที่ 12 หรือซีพียูใหม่เราขอแนะนำให้เปลี่ยน "โหมดพลังงาน" จากหน้าจอการตั้งค่า Windows 11
Aivisspeech มีจุดมุ่งหมายที่จะเป็นซอฟต์แวร์การสังเคราะห์คำพูด AI ฟรีที่ไม่ผูกพันกับการใช้งาน
(ขึ้นอยู่กับใบอนุญาตของแบบจำลองการสังเคราะห์เสียงพูดที่ใช้ในการส่งมอบ) อย่างน้อยที่สุดซอฟต์แวร์นั้นไม่จำเป็นต้องใช้เครดิตและสามารถใช้งานได้อย่างอิสระไม่ว่าจะเป็นบุคคล บริษัท บริษัท การค้าหรือไม่ใช่เชิงพาณิชย์
... อย่างไรก็ตามฉันต้องการให้คนอื่นรู้เกี่ยวกับ Aivisspeech
ถ้าคุณชอบฉันจะมีความสุขถ้าคุณสามารถให้เครดิต aivisspeech ที่ไหนสักแห่งในการส่งมอบ (รูปแบบเครดิตถูกทิ้งไว้ให้คุณ)
มันถูกบันทึกไว้ในโฟลเดอร์ต่อไปนี้:
C:Users(ユーザー名)AppDataRoamingAivisSpeech-EngineLogs~/Library/Application Support/AivisSpeech-Engine/Logs~/.local/share/AivisSpeech-Engine/Logsหากคุณพบปัญหาโปรดรายงานโดยใช้หนึ่งในวิธีการต่อไปนี้:
ปัญหา GitHub (แนะนำ)
หากคุณมีบัญชี GitHub โปรดรายงานผ่านปัญหา GitHub ของเราและเราสามารถตอบกลับได้เร็ว
Twitter (x)
คุณสามารถตอบกลับไปยังบัญชีโครงการ Aivis อย่างเป็นทางการ DM หรือทวีตด้วยแฮชแท็ก #AivissPeech
แบบฟอร์มการติดต่อ
นอกจากนี้คุณยังสามารถรายงานผ่านแบบฟอร์มการติดต่อโครงการ AIVIS
โปรดรายงานข้อมูลต่อไปนี้ให้มากที่สุดและเราจะสามารถตอบกลับได้เร็วขึ้น
Voicevox เป็นซอฟต์แวร์ขนาดใหญ่ที่ยังคงพัฒนาอย่างแข็งขันในปัจจุบัน
ดังนั้นเอ็นจิ้น Aivisspeech กำลังพัฒนาเครื่องยนต์ VoiceVox เวอร์ชันล่าสุดภายใต้นโยบายต่อไปนี้:
voicevox_engine และความแตกต่างในการเปลี่ยนแปลงคำสั่งนำเข้าจะมีขนาดใหญ่มากดังนั้นจึงไม่ได้ทำการเปลี่ยนโฉมใหม่ ขั้นตอนแตกต่างกันอย่างมีนัยสำคัญจากเครื่องยนต์ Voicevox ดั้งเดิม
คุณต้องติดตั้ง Python 3.11 ไว้ล่วงหน้า
# Poetry と pre-commit をインストール
pip install poetry poetry-plugin-export pre-commit
# pre-commit を有効化
pre-commit install
# 依存関係をすべてインストール
poetry installขั้นตอนแตกต่างกันอย่างมีนัยสำคัญจากเครื่องยนต์ Voicevox ดั้งเดิม
# 開発環境で 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 buildจากใบอนุญาตคู่ Voicevox Engine Dual มีเพียง LGPL-3.0 เท่านั้นที่จะได้รับการสืบทอดอย่างอิสระ
ด้านล่างและเอกสาร/ เอกสารต่อไปนี้จะถูกนำไปใช้จากเอกสารเครื่องยนต์ Voicevox ดั้งเดิมโดยไม่ต้องแก้ไข ไม่รับประกันว่าเนื้อหาของเอกสารเหล่านี้จะทำงานร่วมกับเอ็นจิ้น Aivisspeech ด้วย
นี่คือเครื่องยนต์ของ Voicevox
ในความเป็นจริงมันเป็นเซิร์ฟเวอร์ HTTP ดังนั้นคุณสามารถสังเคราะห์ข้อความและคำพูดโดยส่งคำขอ
(บรรณาธิการคือ Voicevox, แกนกลางคือ Voicevox core และโครงสร้างโดยรวมสามารถพบได้ที่นี่)
นี่คือคำแนะนำที่เหมาะกับความต้องการของคุณ
ดาวน์โหลดเอ็นจิ้นที่เกี่ยวข้องที่นี่
โปรดดูเอกสาร API
ด้วยเครื่องยนต์ Voicevox หรือ Editor กำลังทำงานคุณยังสามารถดูเอกสารประกอบสำหรับเครื่องยนต์ที่กำลังเริ่มต้นได้
สำหรับแผนการในอนาคตการทำงานร่วมกันกับ VoiceVox Voice Synthesis Engine อาจเป็นประโยชน์เช่นกัน
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 เมื่อใช้เวอร์ชัน GPU ข้อผิดพลาดอาจเกิดขึ้นได้ขึ้นอยู่กับสภาพแวดล้อม ในกรณีนี้คุณสามารถแก้ปัญหาได้โดยการเพิ่ม --runtime=nvidia ไปยัง docker run
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.wavเสียงที่สร้างขึ้นมีอัตราการสุ่มตัวอย่างพิเศษเล็กน้อยที่ 24,000Hz ดังนั้นผู้เล่นเสียงบางคนอาจไม่สามารถเล่นได้
ค่าที่ระบุสำหรับ speaker คือ style_id ที่ได้รับที่จุดสิ้นสุด /speakers มันมีชื่อว่า speaker สำหรับความเข้ากันได้
คุณสามารถปรับเสียงได้โดยการแก้ไขพารามิเตอร์ของแบบสอบถามการสังเคราะห์คำพูดที่ได้จาก /audio_query
ตัวอย่างเช่นพยายามพูดด้วยความเร็วเร็วกว่า 1.5 เท่า
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 Wind Notation " เป็นสัญลักษณ์ที่ระบุวิธีการอ่านโดยใช้ Katakana และสัญลักษณ์เท่านั้น Aquestalk นี่เป็นส่วนที่แตกต่างจากสัญกรณ์ดั้งเดิม
สไตล์ Aquestalk ปฏิบัติตามกฎต่อไปนี้:
/ 、 ช่วงเวลาเงียบจะถูกแทรกเฉพาะ 、 คั่นด้วย_ ต่อหน้า Kana Kana จะเงียบ' วลีสำเนียงทั้งหมดจะต้องมีตำแหน่งสำเนียงหนึ่งตำแหน่งที่ระบุ? คุณสามารถออกเสียงคำถามได้โดยการเพิ่ม (เต็มความกว้าง) การตอบสนองต่อ /audio_query อธิบายการอ่านว่าเครื่องยนต์ตัดสิน
โดยการแก้ไขสิ่งนี้คุณสามารถควบคุมการอ่านเสียงและสำเนียง
# 読ませたい文章を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.wavคุณสามารถเรียกดูพจนานุกรมผู้ใช้เพิ่มแก้ไขและลบคำออกจาก API
คุณสามารถดึงรายการพจนานุกรมผู้ใช้โดยส่งคำขอ GET ไปที่ /user_dict
curl -s -X GET " 127.0.0.1:50021/user_dict " คุณสามารถเพิ่มคำไปยังพจนานุกรมผู้ใช้ของคุณโดยส่งคำขอโพสต์ไปที่ /user_dict_word
จำเป็นต้องมีพารามิเตอร์ URL ต่อไปนี้:
บทความนี้จะเป็นประโยชน์สำหรับตำแหน่งของแกนสำเนียง
ส่วนตัวเลขที่มีประเภท〇กลายเป็นตำแหน่งแกนสำเนียง
https://tdmelodic.readthedocs.io/ja/latest/pages/introduction.html
ค่าส่งคืนความสำเร็จคือสตริงของ UUID ที่กำหนดให้กับคำ
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 " คุณสามารถแก้ไขคำในพจนานุกรมผู้ใช้โดยส่งคำขอใส่ไปที่ /user_dict_word/{word_uuid}
จำเป็นต้องมีพารามิเตอร์ URL ต่อไปนี้:
สามารถตรวจสอบ word_uuid เมื่อเพิ่มคำและสามารถตรวจสอบได้โดยอ้างอิงพจนานุกรมผู้ใช้
หากประสบความสำเร็จค่าส่งคืนคือ 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 " คุณสามารถลบคำในพจนานุกรมผู้ใช้โดยส่งคำขอลบไปยัง /user_dict_word/{word_uuid}
สามารถตรวจสอบ word_uuid เมื่อเพิ่มคำและสามารถตรวจสอบได้โดยอ้างอิงพจนานุกรมผู้ใช้
หากประสบความสำเร็จค่าส่งคืนคือ 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 " คุณสามารถนำเข้าและส่งออกพจนานุกรมผู้ใช้ในส่วน "Export & INSPORY DICTIONARY DICTIONARY" ในหน้าการตั้งค่าเครื่องยนต์
คุณยังสามารถนำเข้าและส่งออกพจนานุกรมผู้ใช้โดยใช้ 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