😮
PythonからVoiceVoxの話者一覧を取得する
こちらの記事ではPythonを経由してVoiceVoxで音声ファイルを出力する方法を紹介しました。
このプログラムの中で「どのキャラクターに喋ってもらうか」は、speakerとしてID指定する必要がありました。しかしどのキャラクターのどのスタイル(あまあま、ノーマル、ツンツンなど)がどのIDに紐づいているかは、バージョンによって異なる場合があります。そこで各キャラクターとスタイルに紐づけられたIDを取得する方法をご紹介します。
VoiceVoxの話者とスタイル一覧を取得するコード
早速ですがスクリプトはこちらです。
import requests
def get_speakers():
url = "http://localhost:50021/speakers" # VOICEVOX APIのエンドポイント
response = requests.get(url)
if response.status_code == 200:
speakers = response.json()
for speaker in speakers:
name = speaker['name']
style_names = [style['name'] for style in speaker['styles']]
style_ids = [style['id'] for style in speaker['styles']]
for style_id, style_name in zip(style_ids, style_names):
print(f"Speaker: {name}, {style_name} id: {style_id}")
else:
print(f"Error: {response.status_code}")
if __name__ == "__main__":
get_speakers()
プログラム実行時にはVoiceVoxアプリケーションを起動しておいてください。
正常に実行されると、以下のような結果が表示されます。
Speaker: 四国めたん, ノーマル id: 2
Speaker: 四国めたん, あまあま id: 0
Speaker: 四国めたん, ツンツン id: 6
Speaker: 四国めたん, セクシー id: 4
Speaker: 四国めたん, ささやき id: 36
Speaker: 四国めたん, ヒソヒソ id: 37
Speaker: ずんだもん, ノーマル id: 3
Speaker: ずんだもん, あまあま id: 1
Speaker: ずんだもん, ツンツン id: 7
Speaker: ずんだもん, セクシー id: 5
Speaker: ずんだもん, ささやき id: 22
Speaker: ずんだもん, ヒソヒソ id: 38
Speaker: ずんだもん, ヘロヘロ id: 75
Speaker: ずんだもん, なみだめ id: 76
(略)
Speaker: 琴詠ニア, ノーマル id: 74
お目当ての話者とスタイルに割り当てられたidを取得し、プログラムに適用してください。
Discussion