見出し画像

Gladiaで話者識別の音声to文字起こし

またまた、音声生成AIを調査しております。
今日は、私の相談にいつも気さくに乗っていただける弁理士の山田龍也さんから情報をいただいた「Gladia」を調査します。

山田龍也さんは、アイデアの守護者であり、未来を形作る戦略家です。アイデアを出した個人を法的に保護し、その独自性を確保するための専門知識を駆使してくれます。
私も山田さんから、「もっと讃良屋さんのアイデアや技術を、大切にしなさい!」とお叱りと教えをいただいたことがあり、その時のことを、私は今でも大切に心に持っています。

山田龍也さんのリンク↓

Gladiaとは

OpenAI社のWhisperをカスタマイズし、話者分離させることに成功したフランスの会社です。

さっそく結果から報告

完ぺきに話者分離してくれました。入力した音声はこちら↓

https://saratec.me/contents/sample.wav

出力された結果は次の通り

Speaker 0 | 00:00.284
居住所の変更でございますね。 ご連絡ありがとうございます。 それ入りますが ご契約内容を確認いたしますので、 お電話をいただいている方は、 契約者ご本人様でいらっしゃいますか?
Speaker 1 | 00:12.561
はい そうです。 本人です
Speaker 0 | 00:15.760
それでは、お電話をいただいておりますお客様のお名前をお願いいたします。
Speaker 1 | 00:20.644
山田太郎です
Speaker 0 | 00:23.376
山田太郎様でいらっしゃいますね。 では 契約者ご本人様確認のため、 恐れ入りますが 山田様の青年月日をお願いいたします
Speaker 1 | 00:33.456
はい。 青年合併が 1937年 6月17日です。

話者分離は完璧です!
漢字変換が、ところどころ間違っていますね。

そこで、Whisperで音声テキスト変換を行った話者分離されていない結果をもちいて、GPT4oに修正してもらいましょう。

GPT4oに次のようにプロンプトを実行させてみました。

次の話者分離の情報をSTTのみの情報を参照し誤字脱字を直した話者分離の会話にしてください。
###STTのみ
ご住所の変更でございますね。ご連絡ありがとうございます。恐れ入りますが、ご契約内容を確認いたしますのでお電話を頂いてる方は契約者ご本人様でいらっしゃいますか。はいそうです本人です。それではお電話をいただいておりますお客様のお名前をお願い致します。山田太郎です。山田太郎様でいらっしゃいますね。では契約者ご本人様確認のため恐れ入りますが山田様の生年月日をお願いいたしますはい生年月日が1937年6月17日です。
###話者分離
Speaker 0
居住所の変更でございますね。 ご連絡ありがとうございます。 それ入りますが ご契約内容を確認いたしますので、 お電話をいただいている方は、 契約者ご本人様でいらっしゃいますか?
Speaker 1
はい そうです。 本人です
Speaker 0
それでは、お電話をいただいておりますお客様のお名前をお願いいたします。
Speaker 1
山田太郎です
Speaker 0
山田太郎様でいらっしゃいますね。 では 契約者ご本人様確認のため、 恐れ入りますが 山田様の青年月日をお願いいたします
Speaker 1
はい。 青年合併が 1937年 6月17日です。

結果はご覧の通り

話者分離
Speaker 0
ご住所の変更でございますね。ご連絡ありがとうございます。恐れ入りますが、ご契約内容を確認いたしますので、お電話をいただいている方は契約者ご本人様でいらっしゃいますか?
Speaker 1
はい、そうです。本人です。
Speaker 0
それでは、お電話をいただいておりますお客様のお名前をお願いいたします。
Speaker 1
山田太郎です。
Speaker 0
山田太郎様でいらっしゃいますね。では、契約者ご本人様確認のため、恐れ入りますが山田様の生年月日をお願いいたします。
Speaker 1
はい。生年月日が1937年6月17日です。

完ぺきですね。

ここまで話者分離した会話がテキスト化できれば、議事録作成も近い可能性がでてきました。

まとめ

録音ファイルを用意する

Gladiaで話者分離した文字起こしを用意
Whisperで話者分離していない文字起こしを用意

GPT4oで両方の情報を調整する

話者分離した文字起こしが完成する!

ここから先はGPT4oに議事録にしてもらえば良いということですね。

サービス化するには、ユーザーに

音声ファイルをセットしてもらう
何人で話しているかを入力してもらう
議題が過去から続きモノであれば、過去の議事録のテキスト

これくらいを用意していただけると、議事録がささっと数分で出来あがりますね。

作ってみましょう!

プログラムはこちら


python

import requests

url = "https://api.gladia.io/v2/transcription"

payload = {
    "context_prompt": "話者は二人です。Aさん、Bさんと表現してください",
    "custom_vocabulary": ["AI"],
    "detect_language": True,
    "enable_code_switching": True,
    "language": "jp",
    "callback_url": "http://callback.example",
    "subtitles": True,
    "subtitles_config": {"formats": ["srt"]},
    "diarization": True,
    "diarization_config": {
        "number_of_speakers": 2,
        "min_speakers": 1,
        "max_speakers": 2
    },
    "translation": True,
    "translation_config": {
        "target_languages": ["en"],
        "model": "base"
    },
    "summarization": True,
    "summarization_config": {"type": "general"},
    "moderation": True,
    "named_entity_recognition": True,
    "chapterization": True,
    "name_consistency": True,
    "custom_spelling": True,
    "custom_spelling_config": {"spelling_dictionary": {
            "Gettleman": ["gettleman"],
            "SQL": ["Sequel"]
        }},
    "structured_data_extraction": True,
    "structured_data_extraction_config": {"classes": ["Persons", "Organizations"]},
    "sentiment_analysis": True,
    "audio_to_llm": True,
    "audio_to_llm_config": {"prompts": ["Extract the key points from the transcription"]},
    "custom_metadata": {},
    "sentences": True,
    "display_mode": True,
    "audio_url": "https://saratec.me/contents/sample.wav"
}

headers = {
    "x-gladia-key": "ご自身のGlasiaAPIKeyを指定してください",
    "Content-Type": "application/json"
}

response = requests.request("POST", url, json=payload, headers=headers)

print(response.text)

url2 = "https://api.gladia.io/v2/transcription/{}".format(response.json()["id"])

headers2 = {"x-gladia-key": "ご自身のGlasiaAPIKeyを指定してください"}

response2 = requests.request("GET", url2, headers=headers2)

print(response2.text)

讃良屋安明公式ブログあります。お時間のある時に覗いてみてください。

会社のサイトはこちら


いいなと思ったら応援しよう!