🗣️

新しいライブラリーを作った!

2023/03/22に公開

なぜ作ったか

とある組織が開発しているbotでvoicevoxを使った読み上げを作っていたのですが、あまりにも作るのがめんどくさいので、たくさんの人と協力しながら作りたいと思って、voicevoxって名前でpypiにだしました。

ただし本家様に名前を変えるよう言われたためvoicevox-clientに名前を変えました。

PyPIに上げる際のメタデータに使っているもの

twinesetup.py、そしてpyproject.tomlを使っています。twineはライブラリーをアップロードするために使っています。

使用しているクライアントライブラリー

httpx、なぜhttpxを使っているかというと非同期と同期を対応したいとは思っている。

現在は非同期のみでのサポートしています。

ドキュメント

sphinxfuroを使っています。

まず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作って報告してください。

GitHubで編集を提案

Discussion