- AIVMLIB : ไฟล์ AI VIS V OICE M ODEL (.AIVM/.AIVMX) Utility lib rary
aivm ( ai vis v oice m odel) / aivmx ( ai vis v oice m odel สำหรับ onn x ) เป็นรูปแบบไฟล์เปิดสำหรับโมเดลการสังเคราะห์คำพูด AI ที่รวมโมเดลที่ผ่านการฝึกอบรมมาก่อน hyperparameters สไตล์เวกเตอร์
บันทึก
"AIVM" ยังเป็นคำทั่วไปสำหรับข้อกำหนดรูปแบบ AIVM/AIVMX และข้อกำหนดข้อมูลเมตา
โดยเฉพาะไฟล์ AIVM เป็นไฟล์โมเดลใน "Safetensors Format with AIVM Metadata ที่เพิ่มเข้ามา" และไฟล์ AIVMX เป็นไฟล์รุ่นใน "รูปแบบ ONNX พร้อม AIVM Metadata ที่เพิ่มเข้ามา"
"AIVM Metadata" หมายถึงข้อมูลเมตาต่าง ๆ ที่เชื่อมโยงกับแบบจำลองที่ผ่านการฝึกอบรมตามที่กำหนดไว้ในข้อกำหนด AIVM
คุณสามารถใช้โมเดลการสังเคราะห์คำพูด AI ได้อย่างง่ายดายโดยการเพิ่มไฟล์ AIVM/AIVMX ลงในซอฟต์แวร์ที่รองรับข้อกำหนด AIVM รวมถึง AIVISSPEECH/AIVISSPEECH-Engine
AIVMLIB/AIVMLIB-WEB จัดเตรียมยูทิลิตี้สำหรับการอ่านและการเขียนข้อมูลเมตาในไฟล์ AIVM/AIVMX
AIVMLIB นี้เป็นการดำเนินการอ้างอิงของข้อกำหนด AIVM ที่เขียนใน Python หากคุณใช้เว็บเบราว์เซอร์โปรดใช้ AIVMLIB-WEB
เคล็ดลับ
เครื่องกำเนิด AIVM ช่วยให้คุณสามารถสร้างและแก้ไขไฟล์ AIVM/AIVMX ได้อย่างง่ายดายโดยใช้ GUI บนเบราว์เซอร์ของคุณ
เราขอแนะนำให้ใช้เครื่องกำเนิด AIVM เมื่อสร้างและแก้ไขไฟล์ AIVM/AIVMX ด้วยตนเอง
หากคุณติดตั้งด้วย PIP เครื่องมือบรรทัดคำสั่ง aivmlib จะถูกติดตั้งโดยอัตโนมัติ
ต้องใช้ Python 3.11 หรือสูงกว่า
pip install aivmlibฉันใช้บทกวีในระหว่างการพัฒนา
pip install poetry
git clone https://github.com/Aivis-Project/aivmlib.git
cd aivmlib
poetry install --with dev
poetry run aivmlib --helpด้านล่างคือวิธีการใช้เครื่องมือ CLI เอง
$ aivmlib --help
Usage: aivmlib [OPTIONS] COMMAND [ARGS]...
Aivis Voice Model File (.aivm/.aivmx) Utility Library
╭─ Options ─────────────────────────────────────────────────────────────────────────╮
│ --install-completion Install completion for the current shell. │
│ --show-completion Show completion for the current shell, to copy it │
│ or customize the installation. │
│ --help Show this message and exit. │
╰───────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ────────────────────────────────────────────────────────────────────────╮
│ create-aivm 与えられたアーキテクチャ, 学習済みモデル, ハイパーパラメータ, │
│ スタイルベクトルから AIVM メタデータを生成した上で、 │
│ それを書き込んだ仮の AIVM ファイルを生成する │
│ create-aivmx 与えられたアーキテクチャ, 学習済みモデル, ハイパーパラメータ, │
│ スタイルベクトルから AIVM メタデータを生成した上で、 │
│ それを書き込んだ仮の AIVMX ファイルを生成する │
│ show-metadata 指定されたパスの AIVM / AIVMX ファイル内に記録されている AIVM │
│ メタデータを見やすく出力する │
╰───────────────────────────────────────────────────────────────────────────────────╯
$ aivmlib show-metadata --help
Usage: aivmlib show-metadata [OPTIONS] FILE_PATH
指定されたパスの AIVM / AIVMX ファイル内に記録されている AIVM メタデータを見やすく出力する
╭─ Arguments ───────────────────────────────────────────────────────────────────────╮
│ * file_path PATH Path to the AIVM / AIVMX file [default: None] │
│ [required] │
╰───────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ─────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰───────────────────────────────────────────────────────────────────────────────────╯
$ aivmlib create-aivm --help
Usage: aivmlib create-aivm [OPTIONS]
与えられたアーキテクチャ, 学習済みモデル, ハイパーパラメータ, スタイルベクトルから
AIVM メタデータを生成した上で、それを書き込んだ仮の AIVM ファイルを生成する
╭─ Options ─────────────────────────────────────────────────────────────────────────╮
│ * --output -o PATH Path to the output AIVM │
│ file │
│ [default: None] │
│ [required] │
│ * --model -m PATH Path to the Safetensors │
│ model file │
│ [default: None] │
│ [required] │
│ --hyper-parameters -h PATH Path to the hyper │
│ parameters file │
│ (optional) │
│ [default: None] │
│ --style-vectors -s PATH Path to the style │
│ vectors file (optional) │
│ [default: None] │
│ --model-architecture -a [Style-Bert-VITS2 | Styl Model architecture │
│ e-Bert-VITS2 [default: │
│ (JP-Extra)] Style-Bert-VITS2 │
│ (JP-Extra)] │
│ --help Show this message and │
│ exit. │
╰───────────────────────────────────────────────────────────────────────────────────╯
$ aivmlib create-aivmx --help
Usage: aivmlib create-aivmx [OPTIONS]
与えられたアーキテクチャ, 学習済みモデル, ハイパーパラメータ, スタイルベクトルから
AIVM メタデータを生成した上で、それを書き込んだ仮の AIVMX ファイルを生成する
╭─ Options ─────────────────────────────────────────────────────────────────────────╮
│ * --output -o PATH Path to the output AIVMX │
│ file │
│ [default: None] │
│ [required] │
│ * --model -m PATH Path to the ONNX model │
│ file │
│ [default: None] │
│ [required] │
│ --hyper-parameters -h PATH Path to the hyper │
│ parameters file │
│ (optional) │
│ [default: None] │
│ --style-vectors -s PATH Path to the style │
│ vectors file (optional) │
│ [default: None] │
│ --model-architecture -a [Style-Bert-VITS2 | Styl Model architecture │
│ e-Bert-VITS2 [default: │
│ (JP-Extra)] Style-Bert-VITS2 │
│ (JP-Extra)] │
│ --help Show this message and │
│ exit. │
╰───────────────────────────────────────────────────────────────────────────────────╯ด้านล่างเป็นตัวอย่างของการดำเนินการคำสั่ง
# Safetensors 形式で保存された "Style-Bert-VITS2 (JP-Extra)" モデルアーキテクチャの学習済みモデルから AIVM ファイルを生成
# .safetensors と同じディレクトリに config.json と style_vectors.npy があることが前提
# -a オプションを省略した場合、既定で "Style-Bert-VITS2 (JP-Extra)" の学習済みモデルと判定される
$ aivmlib create-aivm -o ./output.aivm -m ./model.safetensors
# 明示的にハイパーパラメータとスタイルベクトルのパスを指定して生成
$ aivmlib create-aivm -o ./output.aivm -m ./model.safetensors -h ./config.json -s ./style-vectors.npy
# ONNX 形式で保存された "Style-Bert-VITS2" モデルアーキテクチャの学習済みモデルから AIVMX ファイルを生成
# .onnx と同じディレクトリに config.json と style_vectors.npy があることが前提
$ aivmlib create-aivmx -o ./output.aivmx -m ./model.onnx -a " Style-Bert-VITS2 "
# 明示的にハイパーパラメータとスタイルベクトルのパスを指定して生成
$ aivmlib create-aivmx -o ./output.aivmx -m ./model.onnx -a " Style-Bert-VITS2 " -h ./config.json -s ./style-vectors.npy
# AIVM ファイルに格納された AIVM メタデータを確認
$ aivmlib show-metadata ./output.aivm
# AIVMX ファイルに格納された AIVM メタデータを確認
$ aivmlib show-metadata ./output.aivmxเคล็ดลับ
สำหรับการใช้งานเป็นห้องสมุดโปรดดูการใช้เครื่องมือ CLI ที่ใช้ใน __main__.py
สำคัญ
AIVMLIB/AIVMLIB-WEB เป็นไลบรารีที่อ่าน/เขียนเฉพาะฟังก์ชั่นสำหรับรูปแบบไฟล์ AIVM/AIVMX
ตรรกะการอนุมานสำหรับโมเดลการสังเคราะห์คำพูดของ AI สำหรับสถาปัตยกรรมแต่ละรุ่นและวิธีการที่ข้อมูลที่ได้จาก AIVMLIB/AIVMLIB-WEB ถูกทิ้งไว้ให้ผู้ใช้ห้องสมุด
ใบอนุญาต MIT
ส่วนนี้กำหนดข้อกำหนดทางเทคนิคต่อไปนี้ที่รวมอยู่ใน "ข้อกำหนด AIVM":
จุดประสงค์คือการรวมโมเดลการสังเคราะห์คำพูด AI ที่ผ่านการฝึกอบรมและข้อมูลเมตาต่าง ๆ ที่จำเป็นสำหรับการใช้งานในไฟล์เดียวป้องกันการกระจายไฟล์และความสับสนและทำให้ง่ายต่อการใช้งานและแชร์โมเดล
เคล็ดลับ
ด้วยการรวมเข้ากับไฟล์เดียวคุณสามารถใช้งานได้อย่างง่ายดายเพียงแค่ดาวน์โหลดไฟล์ AIVM/AIVMX และวางไว้ในโฟลเดอร์ที่ระบุและใช้โมเดลการสังเคราะห์คำพูดทันทีด้วยซอฟต์แวร์ที่เข้ากันได้
ข้อดีอีกอย่างคือมันไม่ใช่ไฟล์ที่บีบอัดดังนั้นจึงไม่จำเป็นต้องปรับใช้
ข้อกำหนด AIVM ไม่ได้ขึ้นอยู่กับสถาปัตยกรรมแบบจำลองของโมเดลการสังเคราะห์คำพูด
มันได้รับการออกแบบด้วยความสามารถในการปรับขนาดในอนาคตและความสามารถรอบตัวเพื่อให้โมเดลการสังเคราะห์คำพูดของสถาปัตยกรรมแบบจำลองที่แตกต่างกันสามารถจัดการได้ในรูปแบบไฟล์ทั่วไป
หากโมเดลที่ผ่านการฝึกอบรมพื้นฐานจะถูกบันทึกไว้ในรูปแบบ Safetensors หรือรูปแบบ ONNX เดียวในหลักการคุณสามารถเพิ่มข้อมูลเมตาเพื่อสร้างไฟล์ AIVM/AIVMX โดยไม่คำนึงถึงสถาปัตยกรรมแบบจำลอง
เมื่อออกแบบเราเน้นความเข้ากันได้กับระบบนิเวศที่มีอยู่เพื่อให้สามารถโหลดเป็น Safetensors ปกติหรือไฟล์ ONNX ได้โดยไม่ต้องประมวลผลการแปลงใด ๆ
สำคัญ
ข้อกำหนด AIVM ไม่ได้กำหนดวิธีการอนุมานสำหรับสถาปัตยกรรมแต่ละรุ่น ข้อมูลจำเพาะถูกกำหนดเป็น "ไฟล์ที่สรุปข้อมูลเมตาของโมเดลการสังเคราะห์คำพูด AI"
ตัวอย่างเช่นสำหรับไฟล์ AIVM รูปแบบการสังเคราะห์คำพูด AI ที่เก็บไว้อาจใช้สำหรับ pytorch หรือ tensorflow
วิธีการอนุมานแบบจำลองการสังเคราะห์คำพูด AI นั้นถูกทิ้งให้อยู่ในการใช้งานซอฟต์แวร์ที่รองรับไฟล์ AIVM/AIVMX
ข้อมูลจำเพาะสำหรับรูปแบบไฟล์ AIVM แสดงอยู่ด้านล่าง
AIVM ( ai vis v oice m odel) เป็นข้อมูลจำเพาะรูปแบบ Safetensor ที่ขยายซึ่งเก็บข้อมูลต่าง ๆ เช่นข้อมูลเมตาของลำโพง (AIVM Manifest), hyperparameters และเวกเตอร์สไตล์เป็นข้อมูลเมตาที่กำหนดเองในพื้นที่ส่วนหัวของแบบจำลองที่ผ่านการฝึกอบรมที่เก็บไว้ใน Safetensors (Safetensors)
นอกจากนี้ยังสามารถกล่าวได้ว่าเป็น "ข้อกำหนดข้อมูลเมตาคำอธิบายทั่วไปสำหรับโมเดลการสังเคราะห์คำพูด AI ที่บันทึกไว้ในรูปแบบ Safetensors"
เนื่องจากเป็นข้อกำหนดเพิ่มเติมในรูปแบบ Safetensor จึงสามารถโหลดเป็นไฟล์ Safetensor ปกติได้
เช่นเดียวกับ Safetensors 8 ไบต์แรกของจำนวนเต็ม 64 บิตตัวน้อยที่ไม่ได้ลงชื่อคือขนาดส่วนหัวตามด้วยสตริง UTF-8 JSON ตามความยาวของขนาดส่วนหัว
ส่วนหัว JSON ของ Safetensors เก็บชดเชยของเทนเซอร์ ฯลฯ แต่คีย์ __metadata__ ช่วยให้คุณตั้งค่าแผนที่จากสตริงเป็นสตริงได้อย่างอิสระ
การใช้ข้อกำหนดนี้ AIVM เก็บข้อมูลสตริงต่อไปนี้ในคีย์ต่อไปนี้ใน __metadata__ :
aivm_manifest : AIVM Manifestaivm_hyper_parameters : hyperparameters สำหรับโมเดลการสังเคราะห์คำพูดStyle-Bert-VITS2 และ Style-Bert-VITS2 (JP-Extra) Model Architecture Stores JSON Stringsaivm_style_vectors : BASE64 เวกเตอร์รูปแบบการสังเคราะห์คำพูดที่เข้ารหัส (ไบนารี)Style-Bert-VITS2 และรูปแบบโมเดล Style-Bert-VITS2 (JP-Extra) สตริงที่มี base64 เข้ารหัส numpy array (.npy) ถูกเก็บไว้ด้านล่างนี้เป็นข้อกำหนดสำหรับรูปแบบไฟล์ AIVMX
AIVMX ( ai vis v oice m odel สำหรับ onnx ) เป็นข้อมูลจำเพาะรูปแบบ ONNX ที่ขยายออกไปซึ่งเก็บข้อมูลต่าง ๆ เช่นข้อมูลเมตาของลำโพง (AIVM Manifest), เวกเตอร์สไตล์ไฮเปอร์พารามิเตอร์เป็นข้อมูลเมตาที่กำหนดเองในพื้นที่ข้อมูลเมตาของแบบจำลองที่ผ่านการฝึกอบรมไว้ในรูปแบบ ONNX
นอกจากนี้ยังสามารถกล่าวได้ว่าเป็น "ข้อกำหนดข้อมูลเมตาคำอธิบายทั่วไปสำหรับโมเดลการสังเคราะห์คำพูด AI ที่บันทึกไว้ในรูปแบบ ONNX"
เนื่องจากเป็นข้อกำหนดเพิ่มเติมในรูปแบบ ONNX จึงสามารถโหลดได้เป็นไฟล์ ONNX ปกติตามที่เป็นอยู่
ไฟล์ ONNX ถูกกำหนดไว้ในรูปแบบบัฟเฟอร์โปรโตคอลและได้รับการออกแบบมาเพื่อจัดเก็บข้อมูลเมตาเป็นรายการของ StringStringEntryProto ในฟิลด์ metadata_props ของข้อความ Root ModelProto
การใช้ข้อกำหนดนี้ AIVMX เก็บข้อมูลสตริงต่อไปนี้ในคีย์ต่อไปนี้ใน metadata_props :
aivm_manifest : AIVM Manifestaivm_hyper_parameters : hyperparameters สำหรับโมเดลการสังเคราะห์คำพูดStyle-Bert-VITS2 และ Style-Bert-VITS2 (JP-Extra) Model Architecture Stores JSON Stringsaivm_style_vectors : BASE64 เวกเตอร์รูปแบบการสังเคราะห์คำพูดที่เข้ารหัส (ไบนารี)Style-Bert-VITS2 และรูปแบบโมเดล Style-Bert-VITS2 (JP-Extra) สตริงที่มี base64 เข้ารหัส numpy array (.npy) ถูกเก็บไว้ด้านล่างนี้เป็นข้อกำหนดสำหรับรายการ AIVM (เวอร์ชัน 1.0) ที่รวมอยู่ในรูปแบบไฟล์ AIVM/AIVMX
รายการ AIVM มีข้อมูลต่าง ๆ ที่จำเป็นในการใช้โมเดลการสังเคราะห์คำพูดเช่นเวอร์ชันรายการสถาปัตยกรรมโมเดลชื่อโมเดลข้อมูลเมตาของลำโพงและข้อมูลสไตล์
รูปแบบข้อมูลสำหรับรายการ AIVM เป็นสตริง UTF-8 ที่เขียนในรูปแบบ JSON
เนื่องจากรูปแบบ JSON รูปภาพและข้อมูลเสียงจะถูกเก็บไว้เป็นสตริงที่เข้ารหัส Base64
บันทึก
ปัจจุบัน AIVM (Safetensors) กำหนดเป็นรูปแบบคอนเทนเนอร์สำหรับ AIVM manifests - พื้นที่ข้อมูลเมตาของ AIVMX (ONNX) จะต้องเป็นค่าคีย์จากประเภทสตริงไปยังประเภทสตริงที่ไม่มีการทำรัง
ข้อมูลไบนารีเช่นรูปภาพและเสียงจะถูกเก็บไว้เป็นสตริงหลังจากถูกเข้ารหัส base64
Style-Bert-VITS2Style-Bert-VITS2 (JP-Extra) สำคัญ
ซอฟต์แวร์ที่รองรับไฟล์ AIVM/AIVMX จะต้องได้รับการตรวจสอบอย่างถูกต้องสำหรับไฟล์ AIVM/AIVMX ของสถาปัตยกรรมรุ่นที่ไม่ได้รับการสนับสนุนจากซอฟต์แวร์ของคุณเอง
ตัวอย่างเช่นซอฟต์แวร์ที่ไม่รองรับสถาปัตยกรรมรุ่นอื่นนอกเหนือจาก Style-Bert-VITS2 (JP-Extra) เมื่อถูกขอให้ติดตั้งไฟล์ AIVM/AIVMX สำหรับสถาปัตยกรรมแบบ Style-Bert-VITS2 การแจ้งเตือนจะแสดงว่า "สถาปัตยกรรมรุ่นนี้ไม่รองรับ" และการติดตั้งจะถูกยกเลิก
สำคัญ
ในทางเทคนิคแบบจำลองการสังเคราะห์คำพูดของสถาปัตยกรรมแบบจำลองนอกเหนือจากที่ระบุไว้ข้างต้นสามารถจัดเก็บได้ แต่สตริงสถาปัตยกรรมแบบจำลองเดียวที่กล่าวถึงข้างต้นถูกกำหนดอย่างเป็นทางการในข้อกำหนด AIVM Manifest (เวอร์ชัน 1.0)
เมื่อกำหนดสตริงสถาปัตยกรรมแบบจำลองของคุณเองคุณจะต้องระมัดระวังอย่างยิ่งเพื่อหลีกเลี่ยงความขัดแย้งชื่อกับสถาปัตยกรรมโมเดลที่มีอยู่หรือการเยื้องศูนย์ระหว่างซอฟต์แวร์ที่แตกต่างกัน
ขอแนะนำให้ส่งคำขอดึงไปยังที่เก็บนี้ให้มากที่สุดและเพิ่มการสนับสนุนอย่างเป็นทางการสำหรับสถาปัตยกรรมรุ่นใหม่ในข้อกำหนด AIVM
ด้านล่างนี้เป็นคำจำกัดความของฟิลด์สำหรับรายการ AIVM เป็นของข้อมูลจำเพาะของ AIVM Manifest (เวอร์ชัน 1.0) (ข้อความที่ตัดตอนมาจากคำจำกัดความ Schema Pydantic ของ AIVMLIB)
สำคัญ
ฟิลด์ในรายการ AIVM อาจถูกเพิ่มขยายหรือลบออกเมื่อข้อกำหนด AIVM ได้รับการปรับปรุงในอนาคต
นอกจากนี้ยังเป็นไปได้ค่อนข้างที่ข้อมูลเมตาใหม่จะถูกเพิ่มเข้าไปในรายการ AIVM และรูปแบบไฟล์ AIVM/AIVMX ด้วยตัวเองด้วยการสนับสนุนสำหรับการอัปเดตเวอร์ชันในอนาคตและสถาปัตยกรรมโมเดลเพิ่มเติม
รุ่น AIVM Manifest ที่ใช้งานอยู่ในปัจจุบันคือ 1.0
class ModelArchitecture ( StrEnum ):
StyleBertVITS2 = 'Style-Bert-VITS2' # 対応言語: "ja", "en-US", "zh-CN"
StyleBertVITS2JPExtra = 'Style-Bert-VITS2 (JP-Extra)' # 対応言語: "ja"
class ModelFormat ( StrEnum ):
Safetensors = 'Safetensors'
ONNX = 'ONNX'
class AivmManifest ( BaseModel ):
""" AIVM マニフェストのスキーマ """
# AIVM マニフェストのバージョン (ex: 1.0)
# 現在は 1.0 のみサポート
manifest_version : Literal [ '1.0' ]
# 音声合成モデルの名前 (最大 80 文字)
# 音声合成モデル内の話者が 1 名の場合は話者名と同じ値を設定すべき
name : Annotated [ str , StringConstraints ( min_length = 1 , max_length = 80 )]
# 音声合成モデルの簡潔な説明 (最大 140 文字 / 省略時は空文字列を設定)
description : Annotated [ str , StringConstraints ( max_length = 140 )] = ''
# 音声合成モデルの制作者名のリスト (省略時は空リストを設定)
# 制作者名には npm package.json の "author", "contributors" に指定できるものと同じ書式を利用できる
# 例: ["John Doe", "Jane Doe <[email protected]>", "John Doe <[email protected]> (https://example.com)"]
creators : list [ Annotated [ str , StringConstraints ( min_length = 1 , max_length = 255 )]] = []
# 音声合成モデルのライセンス情報 (Markdown 形式またはプレーンテキスト / 省略時は None を設定)
# AIVM 仕様に対応するソフトでライセンス情報を表示できるよう、Markdown 形式またはプレーンテキストでライセンスの全文を設定する想定
# 社内のみでの利用など、この音声合成モデルの公開・配布を行わない場合は None を設定する
license : Annotated [ str , StringConstraints ( min_length = 1 )] | None = None
# 音声合成モデルのアーキテクチャ (音声合成技術の種類)
model_architecture : ModelArchitecture
# 音声合成モデルのモデル形式 (Safetensors または ONNX)
# AIVM ファイル (.aivm) のモデル形式は Safetensors 、AIVMX ファイル (.aivmx) のモデル形式は ONNX である
model_format : ModelFormat
# 音声合成モデル学習時のエポック数 (省略時は None を設定)
training_epochs : Annotated [ int , Field ( ge = 0 )] | None = None
# 音声合成モデル学習時のステップ数 (省略時は None を設定)
training_steps : Annotated [ int , Field ( ge = 0 )] | None = None
# 音声合成モデルを一意に識別する UUID
uuid : UUID
# 音声合成モデルのバージョン (SemVer 2.0 準拠 / ex: 1.0.0)
version : Annotated [ str , StringConstraints ( pattern = r'^(0|[1-9]d*).(0|[1-9]d*).(0|[1-9]d*)(?:-((?:0|[1-9]d*|d*[a-zA-Z-][0-9a-zA-Z-]*)(?:.(?:0|[1-9]d*|d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:+([0-9a-zA-Z-]+(?:.[0-9a-zA-Z-]+)*))?$' )]
# 音声合成モデルの話者情報 (最低 1 人以上の話者が必要)
speakers : list [ AivmManifestSpeaker ]
class AivmManifestSpeaker ( BaseModel ):
""" AIVM マニフェストの話者情報 """
# 話者の名前 (最大 80 文字)
# 音声合成モデル内の話者が 1 名の場合は音声合成モデル名と同じ値を設定すべき
name : Annotated [ str , StringConstraints ( min_length = 1 , max_length = 80 )]
# 話者のアイコン画像 (Data URL)
# 画像ファイル形式は 512×512 の JPEG (image/jpeg)・PNG (image/png) のいずれか (JPEG を推奨)
icon : Annotated [ str , StringConstraints ( pattern = r'^data:image/(jpeg|png);base64,[A-Za-z0-9+/=]+$' )]
# 話者の対応言語のリスト (BCP 47 言語タグ)
# 例: 日本語: "ja", アメリカ英語: "en-US", 標準中国語: "zh-CN"
supported_languages : list [ Annotated [ str , StringConstraints ( pattern = r'^[a-z]{2,3}(?:-[A-Z]{4})?(?:-(?:[A-Z]{2}|d{3}))?(?:-(?:[A-Za-z0-9]{5,8}|d[A-Za-z0-9]{3}))*(?:-[A-Za-z](?:-[A-Za-z0-9]{2,8})+)*(?:-x(?:-[A-Za-z0-9]{1,8})+)?$' )]]
# 話者を一意に識別する UUID
uuid : UUID
# 話者のローカル ID (この音声合成モデル内で話者を識別するための一意なローカル ID で、uuid とは異なる)
local_id : Annotated [ int , Field ( ge = 0 )]
# 話者のスタイル情報 (最低 1 つ以上のスタイルが必要)
styles : list [ AivmManifestSpeakerStyle ]
class AivmManifestSpeakerStyle ( BaseModel ):
""" AIVM マニフェストの話者スタイル情報 """
# スタイルの名前 (最大 20 文字)
name : Annotated [ str , StringConstraints ( min_length = 1 , max_length = 20 )]
# スタイルのアイコン画像 (Data URL, 省略可能)
# 省略時は話者のアイコン画像がスタイルのアイコン画像として使われる想定
# 画像ファイル形式は 512×512 の JPEG (image/jpeg)・PNG (image/png) のいずれか (JPEG を推奨)
icon : Annotated [ str , StringConstraints ( pattern = r'^data:image/(jpeg|png);base64,[A-Za-z0-9+/=]+$' )] | None = None
# スタイルの ID (この話者内でスタイルを識別するための一意なローカル ID で、uuid とは異なる)
local_id : Annotated [ int , Field ( ge = 0 , le = 31 )] # 最大 32 スタイルまでサポート
# スタイルごとのボイスサンプル (省略時は空リストを設定)
voice_samples : list [ AivmManifestVoiceSample ] = []
class AivmManifestVoiceSample ( BaseModel ):
""" AIVM マニフェストのボイスサンプル情報 """
# ボイスサンプルの音声ファイル (Data URL)
# 音声ファイル形式は WAV (audio/wav, Codec: PCM 16bit)・M4A (audio/mp4, Codec: AAC-LC) のいずれか (M4A を推奨)
audio : Annotated [ str , StringConstraints ( pattern = r'^data:audio/(wav|mp4);base64,[A-Za-z0-9+/=]+$' )]
# ボイスサンプルの書き起こし文
# 書き起こし文は音声ファイルでの発話内容と一致している必要がある
transcript : Annotated [ str , StringConstraints ( min_length = 1 )]A. เพื่อให้มีสองรูปแบบที่ได้รับการปรับให้เหมาะสมสำหรับแอพพลิเคชั่นและสภาพแวดล้อมที่แตกต่างกันทำให้สามารถใช้งานได้ยืดหยุ่นมากขึ้น
A. ใช่มันเป็นไปได้
AIVM ได้รับการออกแบบให้เป็นส่วนขยายของรูปแบบ Safetensors ในขณะที่ AIVMX ได้รับการออกแบบให้เป็นส่วนขยายของรูปแบบ ONNX ดังนั้นแต่ละคนสามารถอ่านได้เป็นไฟล์ Safetensors ปกติหรือไฟล์ ONNX
ข้อมูลเมตาของ AIVM ถูกเก็บไว้ในพื้นที่ข้อมูลเมตาที่กำหนดโดยข้อกำหนดรูปแบบรูปแบบโมเดลที่มีอยู่และไม่ส่งผลกระทบต่อพฤติกรรมของเครื่องมือที่มีอยู่
A. มีสองวิธี:
โปรดทราบว่าโมเดลที่คุณกำลังแปลงจะต้องถูกบันทึกไว้ในรูปแบบ Safetensor หรือ ONNX เดียว
A. การควบคุมรุ่น Manifest AIVM ดำเนินการภายใต้นโยบายต่อไปนี้:
ปัจจุบัน 1.0 เป็นล่าสุด
A. AIVMLIB และ AIVMLIB-WEB เป็นไลบรารีที่ใช้ข้อมูลจำเพาะ AIVM เดียวกันสำหรับภาษา/สภาพแวดล้อมการทำงานที่แตกต่างกัน
BinaryIO ใน Python กลายเป็น File (blob) ของ JavaScript Web API การออกแบบ API พื้นฐานเหมือนกับ AIVMLIBเคล็ดลับ
ในเวลานี้ยังไม่มีห้องสมุดข้อกำหนด AIVM ที่ได้รับการดูแลอย่างเป็นทางการนอกเหนือจาก AIVMLIB/AIVMLIB-WEB
มีความเป็นไปได้ที่ห้องสมุดบุคคลที่สามสำหรับภาษาอื่น ๆ จะปรากฏในอนาคต
สำคัญ
เมื่อเพิ่มการสนับสนุนสำหรับสถาปัตยกรรมรุ่นใหม่คุณต้องเพิ่มการใช้งานให้กับทั้ง AIVMLIB และ AIVMLIB-WEB
เนื่องจาก AIVM Generator ใช้ AIVMLIB-WEB ห้องสมุดทั้งสองจะต้องได้รับการปรับปรุงเพื่อให้คุณสมบัติใหม่แก่ผู้ใช้
A. ข้อกำหนด AIVM ไม่ได้ระบุรายละเอียดการใช้งานสำหรับสถาปัตยกรรมแบบจำลองทำให้ค่อนข้างง่ายในการเพิ่มสถาปัตยกรรมรุ่นใหม่
GPT-SoVITS2 ) ไปยัง ModelArchitecturegenerate_aivm_metadata() ในเวลาเดียวกันaivm_style_vectors จากนั้นส่งคำขอดึงสำคัญ
ข้อมูลจำเพาะของรายการ AIVM ที่ส่งมาจะต้องได้รับการสนับสนุนทางเทคนิคโดยทั้ง AIVMLIB (Python) และ AIVMLIB-WEB (Web TypeScript)
AIVMLIB-WEB ใช้ภายในเครื่องกำเนิด AIVM
เมื่อคุณเพิ่มการสนับสนุนให้กับ AIVMLIB แล้วให้เพิ่มการสนับสนุนให้กับ AIVMLIB-WEB เช่นกัน
บันทึก
รายการ AIVM ได้รับการออกแบบมาเพื่อกำหนดเมตาดาต้าทั่วไปที่เป็นอิสระจากสถาปัตยกรรมแบบจำลอง
พารามิเตอร์เฉพาะของการใช้งานควรเก็บไว้ในฟิลด์ aivm_hyper_parameters
นอกจากนี้เรายังยอมรับการเพิ่มคำจำกัดความของสคีมา Pydantic สำหรับพารามิเตอร์ hyperparameters ปัจจุบันมีการกำหนดเฉพาะสถาปัตยกรรม HyperParameter สำหรับสถาปัตยกรรม Style-Bert-VITS2
บันทึก
แน่นอนว่ารูปแบบแหล่งที่มาของ AIVM/AIVMX จะต้องถูกบันทึกไว้ในรูปแบบ Safetensors หรือรูปแบบ ONNX เดียว
ดังนั้นสถาปัตยกรรมแบบจำลองที่ครอบคลุมไฟล์หลายรุ่นจึงไม่รองรับ
โปรดพิจารณาวิธีการรวมไฟล์โมเดลลงในไฟล์เดียวหรือลบไฟล์โมเดลที่ไม่จำเป็น
A. ข้อมูลใบอนุญาตอยู่ใน markdown หรือข้อความธรรมดาและตั้งค่าสำเนาใบอนุญาตเต็มรูปแบบที่ฝังโดยตรงในไฟล์ AIVM/AIVMX
เหตุผลในการฝังข้อความใบอนุญาตทั้งหมดแทนที่จะระบุ URL มีดังนี้:
A. แม้ว่าจะไม่มีขีด จำกัด ขนาดเฉพาะ แต่โดยทั่วไปแล้วไฟล์โมเดลนั้นมีขนาดใหญ่มากดังนั้นขนาดไฟล์เพิ่มเติมจึงเพิ่มขึ้นเนื่องจากข้อมูลเมตาควรถูกเก็บไว้ให้น้อยที่สุด
เคล็ดลับ
การใช้งานอ้างอิง AIVM Generator เป็นไปตามแนวทางเหล่านี้เพื่อให้แน่ใจว่ามีการเพิ่มประสิทธิภาพขนาดที่เหมาะสม
A. ไม่แนะนำให้แก้ไขด้วยตนเองเนื่องจากข้อมูลเมตาถูกฝังอยู่ในไบนารีโดยตรง
หากคุณเป็นผู้ใช้ปลายทางโปรดใช้เครื่องกำเนิด AIVM
เคล็ดลับ
นักพัฒนาสามารถเขียนแอปพลิเคชันของตนเองโดยใช้ AIVMLIB/AIVMLIB-WEB
AIVMLIB CLI ให้ความสามารถในการสร้างไฟล์ AIVM/AIVMX ที่มีข้อมูลเมตาดาต้าน้อยที่สุดเท่านั้นและเพื่อตรวจสอบข้อมูลเมตา