会話分析機能をシステムに組み込みたい!
ハイラブルは、対面やオンラインの話し合いをリアルタイムに分析し可視化するクラウドサービスを提供しています。これまで学校や研修など様々な場面のフィードバックに活用されてきました。 (事例はこちら)
ハイラブルの会話分析機能を組み込めるAPI連携機能と、Python で実装したHylable SDKを新しくリリースしました! 今回の記事はこの API連携機能の紹介です。
API連携機能を使うと、「自分のシステムに会話分析機能を組み込む」 ことが可能になります。たとえば、こんなことができます。
- 会議のインクルーシブ度を計算したい
- 会議室内に会話の状況を表示したい
- 会議を点数化するアルゴリズムを作りたい
- カレンダーに合わせて自動的に計測したい
- 会話の状態に合わせてロボットを制御したい
- Slack からデータ取得や計測をしたい
- 動物の音声データを自動収集したい
- 会議参加者に分析データをメール通知したい
この記事では、Hylable SDK (現時点のバージョンは v0.3.0) でできる機能と、実際のサンプルコードを紹介します。
Hylable SDK でできること
Hylable SDK (v0.3.0) でできることは、大きく分けて3つあります。
話し合いのデータを取得したり管理することができます。具体的には、以下の操作が可能です。 詳しくは、Hylable SDKのドキュメントを ご覧ください。
- 発話量やターンテイクなどの話し合い分析データの取得
- モノラルの音声データのダウンロード
- 話し合いの参加者の座席位置の設定や更新
- コースの作成や取得、削除
- メンバーの作成や削除
対面の話し合いでは、たまご型のレコーダーを使って分析を行います。これらの操作ができます。
- 契約しているレコーダーとその状態のリストアップ
- レコーダーの計測の開始・終了
- レコーダーから音声合成
会話の分析に加えて、コミュニケーションスペースを分析する Bamiel の操作もできます。
- ヒートマップの取得
- フィールド上のオブジェクトの追加・削除・取得
実際にやってみた
こちらが Hylable SDK を使って録音の開始と停止を行うプログラムです。 このプログラムでは、レコーダー名と保存するコースを指定すると、指定した時間だけ録音を行います。
通常はブラウザからダッシュボードにログインして操作する必要がありますが、 これを使うとプログラムから録音操作が可能です。
import argparse
import time
from hylable import HDClient
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--profile", default="default")
parser.add_argument("recorder", help="計測するレコーダーの名前")
parser.add_argument("duration", type=int, help="録音時間")
parser.add_argument("course_name", help="データを保存するコース名")
args = parser.parse_args()
# Hylable Discussion とコミュニケーションするクライアントを作成
client = HDClient(args.profile)
# 指定された名前と一致するレコーダーを探す
print("レコーダーを探しています...")
for recorder in client.get_recorders():
if recorder.name == args.recorder:
break
else:
raise ValueError(f"レコーダー {args.recorder} は見つかりませんでした。")
# 指定された名前と一致するコースを探す
print("保存先コースを探しています...")
for course in client.get_courses():
if course.name == args.course_name:
break
else:
raise ValueError(f"コース {args.course_name} は見つかりませんでした。")
# 計測開始の準備として、空のディスカッションを作成する
print("ディスカッションを作成しています...")
discussionobj = client.create_discussion(
course_id=course.id,
recorder=recorder
)
print("ディスカッションが作成されました。 URL はこちらです。")
print(f"https://discussion.hylable.com/#/course/%s/discussion/%s" % (
course.id, discussionobj.id
))
# 計測の開始し、作成したディスカッションにデータを入れる
print("計測を開始します")
client.start_recording(discussionobj)
# 計測時間だけ待つ
print(f"{args.duration} 秒待機中...")
time.sleep(args.duration)
# 計測の停止
print("計測を停止します")
client.stop_recording([recorder])
今後のアップデート
このように、Hylable SDK を使うと、会話の分析機能を自分のシステムに簡単に組み込む事ができます。 今後は、次のような機能を追加していく予定です。- Web会議版のサポート
- Zoomレコーディング版のサポート
- Python 以外の言語のSDK
- さらに高レベルな診断やスコア化
この記事を書いたメンバー
水本武志
ハイラブル株式会社代表。カエルの合唱や人のコミュニケーションの研究が専門。 あらゆるコミュニケーションを調べたい。生物研究プロジェクト Project Dolittle もやってます。