開発ガイド
P2P での通話内容を文字起こしする方法
文字起こしの対象となる音声は、SFU を利用して Publish する必要があります。 エンドユーザー間の通信を行う P2P 通信とは別に、文字起こし機能を利用するための SFU 通信を同時に利用することで、エンドユーザー間の通信は P2P 通信を利用しながら文字起こし機能を利用できます。

SFU 通信料と SFU リソース確保料について
P2P 通信での通話を文字起こしする場合、SkyWay Auth Token に次のような設定を行った上で maxSubscribers の設定を 0 として Publish を行うことで、文字起こしに伴うSFU 通信料と SFU リソース確保料が発生しなくなります。
本設定は SkyWay Auth Token のバージョン 3 から対応しております。
※ SkyWay Auth Token / SFU リソースについて
{
// ...省略
version: 3,
scope: {
// ...省略
rooms: [
{
// ...省略
sfu: {
enabled: true,
maxSubscribersLimit: 0,
},
// ...省略
}
]
}
}Publish 時の maxSubscribers オプションを 0 に設定すると、その Publication は Subscribe ができなくなり、文字起こし専用の Publication として扱われます。
注意事項
SkyWay の各種 SDK では一度 Publish した Stream を再度 Publish することができません。
P2P 通信と SFU 通信を併用する際に同一のマイクを「エンドユーザー間通信」と「文字起こし」で用いる場合は、Stream を 2 回取得する必要があります。
JavaScript SDK での実装例
// トークンはサーバーサイドで生成してください
const token = new SkyWayAuthToken({
jti: uuidV4(),
iat: nowInSec(),
exp: nowInSec() + 60 * 60 * 24,
version: 3,
scope: {
appId: 'ここにアプリケーションIDをペーストしてください',
rooms: [
{
id: '*',
name: 'sttRoom',
methods: ['create', 'close', 'updateMetadata'],
sfu: {
enabled: true,
maxSubscribersLimit: 0,
},
member: {
id: '*',
name: '*',
methods: ['publish', 'subscribe', 'updateMetadata'],
},
},
],
},
}).encode('ここにシークレットキーをペーストしてください');
const context = await SkyWayContext.Create(token);
const room = await SkyWayRoom.FindOrCreate(context, {
name: 'sttRoom',
});
const me = await room.join();
const { audio: communicationAudio } =
await SkyWayStreamFactory.createMicrophoneAudioStream();
// エンドユーザー間の通信にはP2P通信を利用します
await me.publish(communicationAudio, { type: 'p2p' });
// 一度PublishしたStreamは再度Publishすることができないので、改めて文字起こし用のStreamを取得します
const sttAudio = await SkyWayStreamFactory.createMicrophoneAudioStream();
// 文字起こし機能を利用するために、SFU通信を利用します
await me.publish(sttAudio, {
type: 'sfu',
maxSubscribers: 0,
});文字起こしの開始方法はクイックスタートを参照してください。