はじめに
社内で活用している「キクカチ」という音声録音アプリには、長時間にわたる会議や講演の音声を録音・共有する機能があります。しかしながら、大量の録音データを扱う場合には、データの内容を把握することが困難になることがあります。
そこで、音声データを文字に起こし、要約する機能を追加しました。これにより、データを簡潔にまとめることができ、情報を把握するのにかかる時間を短縮できます。
*私がインターンをしている、株式会社PeerLodgeの社内ハッカソンで開発したものです。
機能
- firebaseに保存されている、音声を文字に起こしたデータを要約して、firebase上に保存&アプリ上に表示
- 音声データを文字に起こす機能はこちらの記事で説明しています。
環境
Swift
使用したOpenAI APIのモデル
- Whisper
- gpt-3.5-turbo
準備
- OpenAISwiftをインストール
- File > Add Packagesで検索窓に下記を入力する。
https://github.com/adamrushy/OpenAISwift - OpenAISwiftを追加
- File > Add Packagesで検索窓に下記を入力する。
実装
APIを使用して文章を要約するファイル
import OpenAISwift
import Firebase
// OpenAI APIを使用して、与えられたテキストを要約する関数
func generatedAnswer(text: String) async -> String! {
let env = ProcessInfo.processInfo.environment
guard let openAI_API_Key = env["OPENAPIKEY"] else {
print("環境変数にOpenAI API Keyを設定してください")
return nil
}
let openAI = OpenAISwift(authToken: openAI_API_Key)
do {
let chat: [ChatMessage] = [
// ChatMessageオブジェクトを生成して配列に追加
ChatMessage(role: .system, content: ""),
// ユーザーの発言をChatMessageオブジェクトに入れて配列に追加
ChatMessage(role: .user, content: "以下の文章を200字程度で要約してください。" + text),
// 要約された文章をChatMessageオブジェクトに入れて配列に追加
ChatMessage(role: .assistant, content: "")
]
// OpenAI APIにChatMessageオブジェクトの配列を送信して要約を取得する
let result = try await openAI.sendChat(with: chat)
// 要約されたテキストを出力して返す
print(result.choices.first?.message.content ?? String.self)
return result.choices.first?.message.content
} catch {
// エラー処理
print("error")
return nil
}
}
// Firebase上のデータを更新する関数
func updatePost(_ postId: String, _ summary: String, completion: @escaping (Bool) -> ()) {
// UserDefaultsからcompanyIdを取得する
let ud = UserDefaults.standard
guard let companyId = ud.string(forKey: "companyId") else {
return
}
// Firebase上のデータを更新する
Firestore.firestore().collection("companies").document("\(companyId)").collection("posts").document("\(postId)").updateData([
"summary": summary,
]) { err in
if let err = err {
// エラー処理
print("Error update documet: \(err)")
completion(false)
}
else {
// 成功時の処理
print("Document successfully update")
completion(true)
}
}
}
おわりに
「キクカチ」に要約機能を追加することで、長時間の会議や講演の音声データを簡潔にまとめることができ、情報の把握にかかる時間を大幅に短縮できるようになりました。
今後AIへの指示の仕方を変えることで、要約だけではなく、内容の評価や開演点を提案することができるようになります。
これにより、ビジネスシーンやプライベートな場面での「キクカチ」の活用価値が一層高まることが期待されます。
参考