2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

概要

こんにちは!らっしーねです!まずはこちらをご覧ください!!

このツールは、配信者が喋った内容に対して、ChatGPTが音声で返答してくれるというものです!以下に仕組みを解説します!

スクリーンショット 2023-12-24 0.54.10.png

音声の入力

配信者の方が喋る際に、スマホでGoogle Docsを開き音声入力モードにすることで、トークの内容が文字起こしされます!この入力の部分でwisperなどの書き起こしAIを使用することも検討しましたが、有料であり、かつ手軽ではないため断念しました。

データの読み取り

Google Docsには、ドキュメントの内容を閲覧・変更できるAPIが存在します。これを用いて、 Pythonのコードから文章を取得することができます!

def get_latest_content():
    # ドキュメントの最新の内容を取得
    document = docs_service.documents().get(documentId=DOCUMENT_ID).execute()

    # ドキュメントの内容をテキストとして抽出
    content = read_strucutural_elements(document['body']['content'])
    return content

ChatGPTへ文章を送信・返答を取得

取得した文章をChatGPTへ送信することによって、ChatGPTから返答を引き出します!

このようなプロンプト(behaviour)を事前に記載し、それと同時に文章を送信することによって、ChatGPTからフレンドリーな回答が返ってきます!

#文章を読みとって質問を返してもらうbehaviour
question_behaviour =  
"あなたは私の先輩です。以下の文章を読んで、それに対する質問を出力してください。
敬語は使わず、フレンドリーにお願いします。
(例)私:昨日美味しいラーメンを食べたんだ! 
あなた:そうなんだ!どこのラーメン屋さん? ## 私:"

また、以下のようにコードを記述することによって、メッセージの送信と受信を一挙に行うことができます!PythonはC言語と違い、async / awaitなどを使わずとも外部での非常に時間のかかる処理を待機してくれる性質を持っているので、string型を返す関数をこのように記述するだけで、ChatGPTからの返答を取得することができます!

def chatgpt_response(head, behaviour, chat):

    messages = [
        {"role": "system", "content": behaviour
        },
        {"role": "user", "content": chat},
    ]

    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=messages,
        temperature=0
    )
    resp = response.choices[0].message.content

    return head + resp

YouTube APIを介したチャット欄への送信

世の中の大きなサービスには、大抵の場合APIが存在します。YouTubeも例外ではなく、外部ツールからYouTube LiveにコメントをすることができるYouTube APIが存在します(無料)!

ただし、このYouTubeAPIは自分の動画にのみチャットを送信することができます。機械的に他の人のライブにコメントを送信できてしまっては、当然荒らされてしまうため、その対策ですね。

# メッセージをYouTube Liveチャットに投稿する関数
def send_message(message):
    global service, live_chat_id
    livechat_line = service.liveChatMessages().insert(
      part="snippet",
      body=dict(
        snippet=dict(
          liveChatId=live_chat_id,
          type='textMessageEvent',
          textMessageDetails=dict(messageText=message)
        ),
      ),
    ).execute()

コメントの内容を読み上げてもらう

以上の手順を踏むことで、ChatGPTがチャット欄に記事を投稿することができました!最後に、この文章をbotに読み上げてもらいます!

VOICEVOXとOBSを連携させる方法もあるみたいなのですが、残念ながらMacには対応していないみたいだったので、今回は簡潔に、Chromeの拡張機能「コメント読み上げオバケ」を使用しました!

この拡張機能は、ライブ配信を始め次第、流れてきたコメントを自動的に読み上げてくれるものとなっています。

最後に

実際に使ってみて、音声がうまく入力されなかったり、ChatGPTの性能に限界があったりなど、まだまだ改善できそうな部分は多くあります!あと数ヶ月の間だけですが、少しでも改善できればと思います!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?