vvcore 0.0.1

FFI bindings for VOICEVOX CORE
Documentation
use vvcore::*;

fn main() {
    let version = VoicevoxCore::get_version();
    println!("Voicevox version: {}", version);

    let metas_json = VoicevoxCore::get_metas_json();
    println!("Available voice models: {}", metas_json);

    let supported_devices_json = VoicevoxCore::get_supported_devices_json();
    println!("Supported devices: {}", supported_devices_json);

    {
        let mut opt = VoicevoxCore::make_default_initialize_options();
        let dir = std::ffi::CString::new("open_jtalk_dic_utf_8-1.11").unwrap();
        opt.open_jtalk_dict_dir = dir.as_ptr();

        let vvc = match VoicevoxCore::new(opt) {
            Ok(vvc) => vvc,
            Err(e) => panic!("failed to initialize voicevox {:?}", e),
        };

        let speaker_id = 99999;
        let result = vvc.load_model(speaker_id);
        match result {
            Ok(_) => panic!("unexpected"),
            Err(error) => println!(
                "Error loading model for speaker {}: {}",
                speaker_id,
                VoicevoxCore::error_result_to_message(error)
            ),
        }

        let speaker_id = 0;
        let result = vvc.load_model(speaker_id);
        match result {
            Ok(_) => println!("Model for speaker {} loaded successfully", speaker_id),
            Err(_) => panic!("unexpected"),
        }

        let is_loaded = vvc.is_model_loaded(speaker_id);
        println!("Is model for speaker {} loaded: {}", speaker_id, is_loaded);

        let is_gpu = vvc.is_gpu_mode();
        println!("Is running in GPU mode: {}", is_gpu);
    }
}