VOICEVOX の speaker 一覧を C# アプリから取得するユーティリティーを作ったので掲載しておきます。
using System.Collections.Generic; using System.Media; using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using System.Text.Json.Serialization; using System.Threading.Tasks; public class Style { [JsonPropertyName("name")] public string Name { get; set; } [JsonPropertyName("id")] public int Id { get; set; } } public class SupportedFeatures { [JsonPropertyName("permitted_synthesis_morphing")] public string PermittedSynthesisMorphing { get; set; } } public class Speaker { [JsonPropertyName("supported_features")] public SupportedFeatures SupportedFeatures { get; set; } [JsonPropertyName("name")] public string Name { get; set; } [JsonPropertyName("speaker_uuid")] public string SpeakerUuid { get; set; } [JsonPropertyName("styles")] public List<Style> Styles { get; set; } [JsonPropertyName("version")] public string Version { get; set; } } public static class VoicevoxUtility { const string baseUrl = "http://127.0.0.1:50021/";
// localhostだとレスポンスが遅いのアドレス指定
private static readonly HttpClient httpClient = new HttpClient(); public static IEnumerable<Speaker> EnumerateSpeakers() { var jsonStr = GetSpeakersAsJson().Result; var deserialized = JsonSerializer.Deserialize<List<Speaker>>(jsonStr); if (deserialized is null) { yield break; } foreach (var speakerInfo in deserialized) { yield return speakerInfo; } } private static async Task<string> GetSpeakersAsJson() { using var requestMessage = new HttpRequestMessage(new HttpMethod("GET"), $"{baseUrl}speakers"); requestMessage.Headers.TryAddWithoutValidation("accept", "application/json"); requestMessage.Content = new StringContent(""); requestMessage.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/x-www-form-urlencoded"); var response = await httpClient.SendAsync(requestMessage); return await response.Content.ReadAsStringAsync(); } }
以下は audio_query 等に投げる speaker に指定可能なID一覧をコンソール出力するサンプルです。
foreach (var style in VoicevoxUtility.EnumerateSpeakers().SelectMany(x => x.Styles))
{
Console.WriteLine($"{style.Name}: {style.Id}");
}
ちなみにVOICEVOX 0.14.4では以下の話者とそのIDが出力されました。
キャラクター名 | スタイル | ID |
---|---|---|
四国めたん | ノーマル | 2 |
あまあま | 0 | |
ツンツン | 6 | |
セクシー | 4 | |
ささやき | 36 | |
ヒソヒソ | 37 | |
ずんだもん | ノーマル | 3 |
あまあま | 1 | |
ツンツン | 7 | |
セクシー | 5 | |
ささやき | 22 | |
ヒソヒソ | 38 | |
春日部つむぎ | ノーマル | 8 |
雨晴はう | ノーマル | 10 |
波音リツ | ノーマル | 9 |
玄野武宏 | ノーマル | 11 |
喜び | 39 | |
ツンギレ | 40 | |
悲しみ | 41 | |
白上虎太郎 | ふつう | 12 |
わーい | 32 | |
びくびく | 33 | |
おこ | 34 | |
びえーん | 35 | |
青山龍星 | ノーマル | 13 |
冥鳴ひまり | ノーマル | 14 |
九州そら | ノーマル | 16 |
あまあま | 15 | |
ツンツン | 18 | |
セクシー | 17 | |
ささやき | 19 | |
もち子さん | ノーマル | 20 |
剣崎雌雄 | ノーマル | 21 |
WhiteCUL | ノーマル | 23 |
たのしい | 24 | |
かなしい | 25 | |
びえーん | 26 | |
後鬼 | 人間ver. | 27 |
ぬいぐるみver. | 28 | |
No.7 | ノーマル | 29 |
アナウンス | 30 | |
読み聞かせ | 31 | |
ちび式じい | ノーマル | 42 |
櫻歌ミコ | ノーマル | 43 |
第二形態 | 44 | |
ロリ | 45 | |
小夜/SAYO | ノーマル | 46 |
ナースロボ_タイプT | ノーマル | 47 |
楽々 | 48 | |
恐怖 | 49 | |
内緒話 | 50 |