🗣️
新しいライブラリーを作った!
なぜ作ったか
とある組織が開発しているbotでvoicevoxを使った読み上げを作っていたのですが、あまりにも作るのがめんどくさいので、たくさんの人と協力しながら作りたいと思って、voicevoxって名前でpypiにだしました。
ただし本家様に名前を変えるよう言われたためvoicevox-clientに名前を変えました。
PyPIに上げる際のメタデータに使っているもの
twineとsetup.py、そしてpyproject.tomlを使っています。twineはライブラリーをアップロードするために使っています。
使用しているクライアントライブラリー
httpx、なぜhttpxを使っているかというと非同期と同期を対応したいとは思っている。
現在は非同期のみでのサポートしています。
ドキュメント
sphinxとfuroを使っています。
まずsphinxは有名なライブラリー(例えばrequests)などに使われています。そのため信用があります。
そして、furoはモダン的なデザインを持つドキュメントを作ることができます。
ファイルの構造
voicevox - voicevox engineのREST APIを触るためのファイルを格納しているディレクトリー
voicevox/types - voicevox engineのAPIの通信の型を格納しているディレクトリー
lint
black - コードが綺麗かどうかチェックするために使っている、まあflake8みたいなものです。
pyright - 型チェックするために使う、mypyみたいなものです。
プルリクなどに使う際のコードチェック
pytest - コードが実行できるか確認するためのライブラリー
github actions - コードを一通り実行するgithubのサービス
サンプルコード
from voicevox import Client
import asyncio
async def main():
async with Client() as client:
audio_query = await client.create_audio_query(
"こんにちは!", speaker=1
)
with open("voice.wav", "wb") as f:
f.write(await audio_query.synthesis(speaker=1))
if __name__ == "__main__":
asyncio.run(main())
コード
何か問題がございましたら、ここでissue作って報告してください。
Discussion