26
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

アイレット株式会社Advent Calendar 2024

Day 13

Dify×Gemini 2.0で音声データを簡単文字起こし

Last updated at Posted at 2024-12-31

はじめに

この記事では、ノーコード/ローコードでLLMアプリを開発できるツール「Dify」を使ってGeminiモデルを呼び出し、音声データの文字起こしを自動化する手順を紹介します。

Geminiのセットアップ

まずは、DifyでGeminiを利用するために必要なAPIキーの取得と設定を行います。

Google AI StudioでGemini APIキーを作成する

Google AI Studioにアクセスし、「Google AI Studioにログイン」をクリックします。

image.png

左上の「Get API Key」を選択します。
image.png

「APIキーを作成」をクリック後、新規もしくは既存のプロジェクトを選択してAPIキーを作成します。
image.png

生成が完了したら「コピー」をクリックすると、APIキーがクリップボードにコピーされます。

image.png

以上でGemini APIキーの取得は完了です。

DifyでGemini APIキーを設定する

Difyにアクセスします。

「設定」→「モデルプロバイダー」へと進み、Geminiの「セットアップ」をクリックします。
image.png

先ほどコピーしたAPIキーを入力して「保存」をクリックします。
image.png

音声データの文字起こし

次に、実際に音声データの文字起こしを実行するためのフローを作成します。

チャットフローの作成

トップ画面に戻り、「最初から作成」をクリックします。

image.png

「チャットフロー」を選択し、アプリの名前を入力したら「作成する」をクリックします。

image.png

開始ノードの設定

作成したチャットフローが表示されたら「開始」ノードを選択し、入力フィールドの「+」をクリックします。
image.png

開始ノードはユーザーの入力やアップロードされたファイルを受け取る役割を持っています。
入力フィールドで追加する情報の形式を設定して保存します。

  • フィールドタイプ:単一ファイル
  • 変数名:audio
  • ラベル名:音声
  • ファイルタイプ:音声

image.png

これにより、ユーザーがアップロードした音声ファイルがaudio変数で取得できるようになります。

LLMノードの設定

続いて「LLM」ノードで使用するモデルとプロンプトを設定します。
今回は記事執筆時点で最新モデルのGemini 2.0 Flash Thinkingを使用します。

コンテキスト:開始{x}audio
SYSTEMプロンプト:

​受け取った内容を文字起こししてください。
適切な句読点や段落分けを行なってください。
文字起こしの内容のみ出力してください。
(コンテキスト)

ビジョン:開始{x}audio

image.png

機能設定

続いて、画面上部の「機能」を開いて「会話の開始」を有効にします。

image.png

「会話の開始」では、チャットを開始したタイミングで表示するメッセージやボタンを設定できます。

image.png

これで音声をアップロードして文字起こしを行う基本フローが完成しました。

動作確認

画面右上の「プレビュー」からテスト用のチャット画面を開き、任意の音声ファイルをアップロードします。
アップロードが完了したら「文字起こしする」ボタンをクリックして実行します。

image.png

以下はサンプル用の会議音声を文字起こしした例です。

image.png

Difyにはプロンプトジェネレーターという便利な機能が用意されています。
これは簡単な指示をテキストで入力するだけで、Dify側が自動でプロンプトを生成してくれる機能です。
議事録作成や話者分離など、さらに高度なテキスト処理を行いたい場合には、ぜひこの機能を活用してください。

image.png

image.png

image.png

まとめ

今回は、DifyとGeminiを組み合わせた音声文字起こしのフローを構築する手順をご紹介しました。
DifyはNotionなどの外部サービスとも連携できるので、さらに機能を拡張していくことも可能です。

今回作成したフローのDSLファイルは以下になります。
最後までお読みいただき、ありがとうございました。

app:
  description: ''
  icon: 🤖
  icon_background: '#FFEAD5'
  mode: advanced-chat
  name: Gemini 文字起こし
  use_icon_as_answer_icon: false
kind: app
version: 0.1.5
workflow:
  conversation_variables: []
  environment_variables: []
  features:
    file_upload:
      allowed_file_extensions: []
      allowed_file_types:
      - audio
      allowed_file_upload_methods:
      - remote_url
      - local_file
      enabled: true
      fileUploadConfig:
        audio_file_size_limit: 50
        batch_count_limit: 5
        file_size_limit: 15
        image_file_size_limit: 10
        video_file_size_limit: 100
        workflow_file_upload_limit: 10
      image:
        enabled: false
        number_limits: 3
        transfer_methods:
        - local_file
        - remote_url
      number_limits: 1
    opening_statement: 音声ファイルをアップロード後、クリックしてください。
    retriever_resource:
      enabled: false
    sensitive_word_avoidance:
      enabled: false
    speech_to_text:
      enabled: false
    suggested_questions:
    - 文字起こしする
    suggested_questions_after_answer:
      enabled: false
    text_to_speech:
      enabled: false
      language: ''
      voice: ''
  graph:
    edges:
    - data:
        sourceType: start
        targetType: llm
      id: 1735569214372-llm
      source: '1735569214372'
      sourceHandle: source
      target: llm
      targetHandle: target
      type: custom
    - data:
        sourceType: llm
        targetType: answer
      id: llm-answer
      source: llm
      sourceHandle: source
      target: answer
      targetHandle: target
      type: custom
    nodes:
    - data:
        desc: ''
        selected: false
        title: 開始
        type: start
        variables:
        - allowed_file_extensions: []
          allowed_file_types:
          - audio
          allowed_file_upload_methods:
          - local_file
          - remote_url
          label: audio
          max_length: 48
          options: []
          required: true
          type: file
          variable: audio
      height: 90
      id: '1735569214372'
      position:
        x: 77.60494773742568
        y: 282
      positionAbsolute:
        x: 77.60494773742568
        y: 282
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    - data:
        context:
          enabled: true
          variable_selector:
          - '1735569214372'
          - audio
        desc: ''
        model:
          completion_params:
            temperature: 0.7
          mode: chat
          name: gemini-2.0-flash-thinking-exp-1219
          provider: google
        prompt_template:
        - id: b4249447-b2e5-4276-b643-6e2361638ed7
          role: system
          text: '​受け取った内容を文字起こししてください。

            適切な句読点や段落分けを行なってください。

            文字起こしの内容のみ出力してください。

            {{#context#}}'
        selected: false
        title: LLM
        type: llm
        variables: []
        vision:
          configs:
            detail: high
            variable_selector:
            - '1735569214372'
            - audio
          enabled: true
      height: 98
      id: llm
      position:
        x: 378.6101940965748
        y: 282
      positionAbsolute:
        x: 378.6101940965748
        y: 282
      selected: true
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    - data:
        answer: '{{#llm.text#}}'
        desc: ''
        selected: false
        title: 回答
        type: answer
        variables: []
      height: 103
      id: answer
      position:
        x: 680
        y: 282
      positionAbsolute:
        x: 680
        y: 282
      selected: false
      sourcePosition: right
      targetPosition: left
      type: custom
      width: 244
    viewport:
      x: 22.102506637340753
      y: -20.30268868260356
      zoom: 1.0213516550087547
26
3
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
26
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?