Skip to content

Commit

Permalink
新クラス設計を元にしたAPIたたき
Browse files Browse the repository at this point in the history
  • Loading branch information
qwerty2501 committed Feb 20, 2023
1 parent aad2dcf commit 341b8b9
Showing 1 changed file with 85 additions and 1 deletion.
86 changes: 85 additions & 1 deletion crates/voicevox_core/src/publish.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,96 @@ use onnxruntime::{
ndarray,
session::{AnyArray, NdArray},
};
use std::ffi::{CStr, CString};
use std::path::PathBuf;
use std::sync::Mutex;
use std::{
ffi::{CStr, CString},
path::Path,
};

const PHONEME_LENGTH_MINIMAL: f32 = 0.01;

/// 音声合成モデルIdの実体
pub type RawSpeechSynthesisModelId = usize;

/// 音声合成モデルId (型を強く分けるためにこうしている)
pub struct SpeechSynthesisModelId(RawSpeechSynthesisModelId);

/// 音声合成モデル
pub struct SpeechSynthesisModel {}

/// 音声合成モデルのメタ情報
pub struct SpeechSynthesisModelMeta {
id: SpeechSynthesisModelId,
speakers: Vec<SpeakerMeta>,
}

/// スピーカーのメタ情報
pub struct SpeakerMeta {
id: SpeakerId,
name: String,
styles: Vec<StyleMeta>,
version: String,
uuid: String,
}

pub struct StyleMeta {
id: StyleId,
name: String,
}

impl SpeechSynthesisModel {
/// 与えられたパスからモデルを取得する
pub fn from_path(path: impl AsRef<Path>) -> Result<Self> {}
/// 与えられたidからモデルを取得する
pub fn from_id(id: &SpeechSynthesisModelId) -> Result<Self> {}
/// このモデルのIdを返す
pub fn id(&self) -> &SpeechSynthesisModelId {}
/// このモデルのメタ情報を返す
pub fn metas(&self) -> &SpeechSynthesisModelMeta {}
}

/// スタイルIdの実体
pub type RawStyleId = usize;
/// スタイルId
pub struct StyleId(RawStyleId);

/// スピーカーIdの実体
pub type RawSpeakerId = usize;

/// スピーカーId
pub struct SpeakerId(RawSpeakerId);

/// 音声シンセサイザ
pub struct SpeechSynthesizer {}
impl SpeechSynthesizer {
/// コンストラクタ兼初期化
pub fn new_with_initialize(options: InitializeOptions) -> Self {}

/// 音声合成モデルを読み込む
pub fn load_model(&mut self, model: SpeechSynthesisModel) -> Result<()> {}

/// 指定したモデルIdの音声合成モデルを開放する
pub fn unload_model(&mut self, model_id: &SpeechSynthesisModelId) -> Result<()> {}

/// 指定したモデルIdの音声合成モデルが読み込まれているか判定する
pub fn is_loaded_model(&self, model_id: &SpeechSynthesisModelId) -> bool {}

/// 今読み込んでいる音声合成モデルのメタ情報を返す
pub fn metas(&self) -> &SpeechSynthesisModelMeta {}

/// 音声合成を行う
pub fn synthesis(&self, style_id: &StyleId) -> Result<Vec<u8>> {}
}

pub struct Device {}

/// スピーカーId,スタイルIdから音声合成モデルIdを取得する
pub fn get_model_id(speaker_id: &SpeakerId, style_id: &StyleId) -> Result<SpeechSynthesisModelId> {}

/// サポートされているデバイス情報を取得する
pub fn get_supported_devices() -> Result<SupportedDevices> {}

pub struct VoicevoxCore {
synthesis_engine: SynthesisEngine,
use_gpu: bool,
Expand Down

0 comments on commit 341b8b9

Please sign in to comment.