2025/03/11

PythonのWEBフレームワーク「Fastapi」開発環境の構築して、http経由で接続する

 こんにちは、Akira(Type-EDGE)です。

 あなたはPythonを使っていますか?

私はRaspberry Pi 5とPythonを組み合わせて、Google AI Studioとつないだり、音声をテキストにしたりしています。

文字通り、Pythonで遊んでいる状態です。

とはいえ、今の所、ssh接続をしたCLIでのやり取りなので、面白みが欠けたり拡張性が乏しかったりと少し物足りなさを感じてきたところです。

そこで今回はWEBフレームワークであるFastapiを導入して、http通信によるRaspberry Piとの疎通に挑戦しようと思い立ちました。

WEBフレームワークなので、html/cssを利用すればGUIを簡単に生成できますし、クライアントマシン側でアプリ開発を行うことも視野に入れることができます。

それでは、まずはFastapiの開発環境を作ってみましょうッ!

PythonのWEBフレームワーク「Fastapi」開発環境の構築して、http経由で接続する

前提条件

先だって申し上げておきますが、pythonの仮想環境を構築済です。

以下の記事でPythonの仮想環境を構築する方法を記載しましたので、これから環境構築する方は是非参考にしていただけると嬉しいです。

https://www.type-edge.com/2025/02/raspberry-pi-5-python.html

Fastapiをインストールする

以下のドキュメントに沿って環境を作成していきます。

https://fastapi.tiangolo.com/ja/tutorial/#fastapi

まずpythonの仮想環境を立ち上げて、Fastapiとunicornをインストールします。

pip install fastapi

pip install "uvicorn[standard]"

fastapiを起動する前に、Raspberry Pi 5のufwを許可しておきます。

sudo ufw allow 8080

またIPアドレスを確認しておきましょう

hostname -I

接続用のpythonプログラムを作成する

以下は公式に書かれたコードです。

from fastapi import FastAPI
app = FastAPI()

@app.get("/")
async def root():
    return { "message": "Hello World" }

Fastapiサーバを立ち上げて、http経由で接続する

ここまで終えたら、fastapiのサーバを立ち上げます。

uvicorn main:app --host 0.0.0.0 --port 8080 --reload

無事に立ち上がったら、Hello Worldの表示が出ます。

最後に

今回はPythonのWEBフレームワーク Fastapiの環境構築について記事にしました。

pythonの仮想環境ができていれば、サクッと環境が作れてしまうのでとても簡単な印象を覚えました。

とはいえ、現状は防御が無いので外部からの干渉にとても弱いです。

実際にはセキュリティを考慮して構築しなければならないでしょう。

とはいえ、それは先の話としておきましょう。

まずはFastapiについて理解を深め、適切なサービスを構築していくのが求められています。

 今回の記事は如何でしたか?
もし今回の記事が良かったと思った方や評価したいと思った方は、コメントを残して頂けると嬉しいです。 

また、私はパソコン以外にも記事を書いていますので、そちらも読んでいただけると幸いです。

2025/03/06

Raspberry Pi 5に gTTS をインストールして音声出力する

何かをするとき、耳で音楽を聴きながらやっていませんか?

こんにちは、Akira(Type-EDGE)です。

最近、voicyにハマってしまいました。
今までは何か音楽を聴くとか、朗読サービスを受けていたとかないのですが、アレクサを買って以来、ちょっとしたことをやっている時には耳で何かを聞く習慣ができました。

その一つがvoicyです。
最新の情報を提供していて、「ながら」作業しながら知識を得れる良いサービスだと感じています。

今回は、Raspberry Pi 5で、Google AI Studioで出力した文章を耳で聞くようにする方法を紹介します。

どんな声で話しかけてくれるのか、ちょっとワクワクしちゃいますね!

それでは、行ってみましょうッ!

Raspberry Pi 5に gTTS をインストールして音声出力する

ところでgTTSとは?

gTTS (Google Text-to-Speech)は、Googleの音声合成エンジンを利用してテキストを音声に変換するPythonライブラリです。

多言語対応しており、日本語を含む様々な言語の音声を生成できる他、地域性(訛り)や声の速度を変えることができます。

gTTSのメリット

gTTSのメリットですが、わずか数行のコードでテキストをMP3ファイルに変換できます。さらに、gTTSはオフライン環境でも動作するため、インターネット接続が不安定な場所でも音声合成を利用できます。

負荷も大きくないので、今回のRaspberry Pi 5 でも十分に動いてくれました。

gTTSのデメリット

ちょっと棒読み感が強いので会話は期待しない方が良いです。声のトーンを変えることができないも残念なポイント。

無料かつオフライン環境で使えるのだから、仕方が無いと言えば仕方のないデメリットなのかもしれません。

gTTSの使い方

gTTSのインストール

まずは必要なライブラリを導入していきます。

pip install gTTS

mpg123のインストール

 CLIで音声を出力するのに必要なライブラリを導入します。

sudo apt install mpg123

Google AI Studioで生成したテキストを音声にする

gTTS と mpg123 を使用して、与えたテキストを音声ファイルにして、CLIで読み上げます。以下のコードだと、変数tにテキストを、変数lにテキストの言語(今回は日本語)を設定し、テキストを読み上げます。

from gtts import gTTS
from io import BytesIO
import subprocess

def txt2speak(t='サンプル', l='ja'):
    try:
        tts = gTTS(text=t, lang=l, tld='co.jp')
        fp = BytesIO()
        tts.write_to_fp(fp)
        fp.seek(0)
        subprocess.run(["mpg123", "-q", "-"], input=fp.read(), check=True)
    except AssertionError:
        print("mpg123 がインストールされていません。`sudo apt install mpg123` を実行してください。")
    except Exception as e:
        print(f"エラーが発生しました: {e}")

最後に

今回はgTTSを使った音声出力を行いました。

gTTSはスペックの低いRaspberry Pi 5でも短い時間で音声ファイルを作ることができました。

簡単かつオフラインで音声ファイルを作れるのは良いですが、棒読みなのがちょっと残念でした。

より人らしい話し方をできる方法を模索したいと感じました。 

今回の記事は如何でしたか?
もし今回の記事が良かったと思った方や評価したいと思った方は、コメントを残して頂けると嬉しいです。 

また、私はパソコン以外にも記事を書いていますので、そちらも読んでいただけると幸いです。

PythonのWEBフレームワーク「Fastapi」開発環境の構築して、http経由で接続する

 こんにちは、Akira(Type-EDGE)です。  あなたはPythonを使っていますか? 私はRaspberry Pi 5とPythonを組み合わせて、Google AI Studioとつないだり、音声をテキストにしたりしています。 文字通り、Pythonで遊んでいる状態で...