Logo

JavaScript

DolphinVoice JavaScript SDK

DolphinVoice SDKは音声認識と合成のために使用されます。このSDKは3つの主要なモジュールを提供します:

  • リアルタイム音声認識 (ASR)
  • 録音ファイル書き起こし (FileAsr)
  • 音声合成 (TTS)

ドキュメント

DolphinVoice SDKに関する詳細なドキュメントやガイドについては、以下のリソースを参照してください:

技術サポートが必要な場合や質問がある場合は、開発者サポートチームにお問い合わせください

インストール

このSDKは npm から直接インストールできます。

npm install @dolphinvoice/sdk

または

pnpm install @dolphinvoice/sdk

または

yarn add @dolphinvoice/sdk

使用方法

// ASRモジュールと必要な型定義をインポート
import { RealTimeAsrSDK } from '@dolphinvoice/sdk';
import type { RealTimeAsrOptions, RealTimeAsrEventData } from '@dolphinvoice/sdk';

// 認証情報を使ってSDKを初期化
const app_id = 'YOUR_APP_ID';

// 方法1: Signatureを使用(推奨)
// 署名を生成するには、'https://developers.dolphinvoice.ai/ja/docs/api/start/auth#15-signature計算方法' を参照してください。
const authOptions = {
  signature: 'SERVER_GENERATED_SIGNATURE',
  timestamp: 1712345678,
};
// リアルタイム音声認識SDKの新しいインスタンスを作成
const sdk = new RealTimeAsrSDK(app_id, authOptions);

//// 方法2:appSecretを直接使用(安全でない)
//const appSecret = 'YOUR_APP_SECRET';
//// リアルタイム音声認識SDKの新しいインスタンスを作成
//const sdk = new RealTimeAsrSDK(app_id, appSecret);

// 後で使用するためにマイクストリームの参照を保存
let micStream: MediaStream | null = null;

// マイクベースの音声認識を開始する関数
const startMicRecognition = async () => {
  // 認識パラメータを構成
  const options: RealTimeAsrOptions = {
    lang_type: 'ja-JP',  // 言語コード
  };

  // マイクのアクセス権を要求し、最適な音声設定を設定
  micStream = await navigator.mediaDevices.getUserMedia({
    audio: {
      echoCancellation: true,     // エコーの干渉を減少させる
      noiseSuppression: true,     // 背景ノイズの干渉を減少させる
      sampleRate: 16000,          // 16kHzサンプリングレート、認識パラメータのサンプリングレート設定に応じて調整が必要で、最適な認識効果を得る
    },
  });

  // 認識セッションを初期化
  await sdk.start(options);

  // 異なる認識状態のイベント処理
  // 認識セッション開始
  sdk.on('TranscriptionStarted', (data: RealTimeAsrEventData) => {
    console.log('TranscriptionStarted:', data);
    // 認識開始、マイクストリームをSDKに送信
    if (micStream) {
      sdk.sendStream(micStream);
    }
  });

  // 新しい文の開始
  sdk.on('SentenceBegin', (data: RealTimeAsrEventData) => {
    console.log('SentenceBegin:', (data as any).payload?.result);
  });

  // 認識中間結果
  sdk.on('TranscriptionResultChanged', (data: RealTimeAsrEventData) => {
    console.log('TranscriptionResultChanged:', (data as any).payload?.result);
  });

  // 完了した文
  sdk.on('SentenceEnd', (data: RealTimeAsrEventData) => {
    console.log('SentenceEnd:', (data as any).payload?.result);
  });

  // セッション完了
  sdk.on('TranscriptionCompleted', (data: RealTimeAsrEventData) => {
    console.log('TranscriptionCompleted:', (data as any).payload?.result);
    // 完了後にマイクリソースをクリーンアップ
    micStream?.getTracks().forEach((track) => track.stop());
  });

  // 警告イベント
  sdk.on('Warning', (data: RealTimeAsrEventData) => {
    console.log('Warning:', (data as any).header);
  });

  // エラーイベント
  sdk.on('Error', (data: RealTimeAsrEventData) => {
    console.error('Error:', (data as any).header);
  });
};

// 認識を停止しリソースをクリーンアップ
const stopMicRecognition = () => {
  sdk.stop();  // 認識セッションを停止
  // マイクリソースを解放
  micStream?.getTracks().forEach((track) => track.stop());
};

// 認識開始呼び出しメソッド
startMicRecognition();
// 認識停止呼び出しメソッド
stopMicRecognition();
// FileAsrモジュールと必要な型定義をインポート
import { FileAsr } from '@dolphinvoice/sdk'; 
import type { FileAsrParams } from '@dolphinvoice/sdk'; 

// 認証情報を使ってSDKを初期化
const app_id = 'YOUR_APP_ID'; 

//// 急速版を使用する場合は、baseOptionsを設定
//const baseOptions = {
//  interface_version: 'vip',
//}

// 方法1: Signatureを使用(推奨)
// 署名を生成するには、'https://developers.dolphinvoice.ai/ja/docs/api/start/auth#15-signature計算方法' を参照してください。
const authOptions = {
  signature: 'SERVER_GENERATED_SIGNATURE',
  timestamp: 1712345678,
};
// 録音ファイル書き起こしSDKの新しいインスタンスを作成
const sdk = new FileAsr(app_id, authOptions, baseOptions);

//// 方法2:appSecretを直接使用(安全でない)
//const appSecret = 'YOUR_APP_SECRET'; 
//// 録音ファイル書き起こしSDKの新しいインスタンスを作成
//const sdk = new FileAsr(app_id, appSecret, baseOptions);

// 録音ファイルを書き起こす関数
const transcribeAudioFile = () => { 
  // パラメータを構成
  const params: FileAsrParams = { 
      "lang_type": "ja-JP",  // 言語コード
      "format": "mp3",  // 音声ファイル形式
  }; 

  // ファイルをアップロードして書き起こす
  sdk.upload(params, (progress, result) => { 
    // 進行状況コールバックが処理中の更新を提供
    console.log(`Progress: ${progress}%`, result); 
  }).then(finalResult => { 
    // 成功コールバック、書き起こしの結果を含む
    console.log('Result:', finalResult); 
  }).catch(err => { 
    // エラーハンドリング
    console.error('Error:', err);   
  }); 
} 

// 書き起こし開始呼び出しメソッド
transcribeAudioFile(); 
// TTSモジュールと必要な型定義をインポート
import { ShortTtsSDK } from '@dolphinvoice/sdk'; 
import type { ShortTtsEventData, ShortTtsOptions } from '@dolphinvoice/sdk'; 

// 認証情報を使ってSDKを初期化
const app_id = 'YOUR_APP_ID'; 

//// 非ストリーミングAPI(HTTP API)を使用する場合は、baseOptionsを設定
//const baseOptions = {
//  interface_mode: 'http',
//}

// 方法1: Signatureを使用(推奨)
// 署名を生成するには、'https://developers.dolphinvoice.ai/ja/docs/api/start/auth#15-signature計算方法' を参照してください。
const authOptions = {
  signature: 'SERVER_GENERATED_SIGNATURE',
  timestamp: 1712345678,
};
// 音声合成SDKの新しいインスタンスを作成
const sdk = new ShortTtsSDK(app_id, authOptions, baseOptions);  // baseOptionsは非必須

//// 方法2:appSecretを直接使用(安全でない)
//const appSecret = 'YOUR_APP_SECRET'; 
//// 音声合成SDKの新しいインスタンスを作成
//const sdk = new ShortTtsSDK(app_id, appSecret, baseOptions);  // baseOptionsは非必須 

// テキストを合成する音声の関数
const synthesizeSpeech = () => { 
  // 合成パラメータを構成
  const options: ShortTtsOptions = { 
      "text": "天気がいいから、散歩しましょう。",  // 合成するテキスト
      "lang_type": "ja-JP"                // 言語コード
  }; 

  // 音声合成セッションを初期化
  sdk.start(options); 

  // 異なる合成状態のイベント処理
  // 合成開始
  sdk.on('SynthesisStarted', (data: ShortTtsEventData) => { 
    console.log('SynthesisStarted:', data) 
  }); 

  // 合成時間
  sdk.on('SynthesisDuration', (data: ShortTtsEventData) => { 
    // 合成音声の総時間を提供
    console.log('SynthesisDuration:', data) 
  }); 

  // 合成タイムスタンプ
  sdk.on('SynthesisTimestamp', (data: ShortTtsEventData) => { 
    // 合成テキストのタイムスタンプ情報を提供
    console.log('SynthesisTimestamp:', data) 
  }); 

  // 合成音声データブロック
  sdk.on('BinaryData', (data: ShortTtsEventData) => { 
    // 合成中に受信した音声データ
    console.log('BinaryData:', data) 
    // ここでは通常音声データを処理します
    // 例えば、再生するかファイルに保存
  }); 

  // 合成完了
  sdk.on('SynthesisCompleted', (data: ShortTtsEventData) => { 
    console.log('SynthesisCompleted:', data) 
  }); 

  // 警告イベント
  sdk.on('Warning', (data: ShortTtsEventData) => { 
    console.log('Warning:', data.header); 
  }); 

  // エラーイベント
  sdk.on('Error', (data: ShortTtsEventData) => { 
    console.error('Error:', data.header); 
  }); 
} 

// 音声合成開始呼び出しメソッド
synthesizeSpeech(); 

APIリファレンス

リアルタイム音声認識モジュールは、リアルタイムオーディオストリームを処理するために使用されます。

メソッド

  • on(event: RealTimeAsrEventType, callback: RealTimeAsrEventCallback) - 認識イベントにイベントハンドラーを登録
  • start(params: RealTimeAsrOptions) - 指定されたパラメータを使用して新しい認識セッションを開始
  • stop() - 現在の認識セッションを停止し、リソースを解放
  • sendStream(stream: MediaStream) - 音声ストリームを認識サービスに送信
完全なAPIドキュメントはDolphinVoice APIドキュメントを参照してください。

イベント

  • TranscriptionStarted - 認識セッションが開始されたときにトリガー
  • SentenceBegin - 新しい文が検出されたときにトリガー
  • TranscriptionResultChanged - 中間結果が更新されたときにトリガー
  • SentenceEnd - 文が完了したときにトリガー
  • TranscriptionCompleted - 認識セッション全体が完了したときにトリガー
  • Warning - 非致命的な警告が発生したときにトリガー
  • Error - エラーが発生したときにトリガー

音声ファイルの書き起こしモジュールは、事前に録音された音声ファイルを処理するために使用されます。

メソッド

  • upload(params: FileAsrParams, onProgress: (progress: number, result?: any) => void) - 音声ファイルをアップロードして書き起こし、進行状況の更新を提供
完全なAPIドキュメントはDolphinVoice APIドキュメントを参照してください。

音声合成モジュールは、テキストを自然な音声に変換するために使用されます。

メソッド

  • on(event: ShortTtsEventType, callback: ShortTtsEventCallback) - 合成イベントにイベントハンドラーを登録
  • start(params: ShortTtsOptions) - 指定されたパラメータを使用して新しい合成セッションを開始
完全なAPIドキュメントはDolphinVoice APIドキュメントを参照してください。

イベント

  • SynthesisStarted - 合成プロセスが開始されたときにトリガー
  • SynthesisDuration - 合成音声の総時間を提供
  • SynthesisTimestamp - 合成テキストのタイムスタンプ情報を提供
  • BinaryData - 合成中に受信した音声データ
  • SynthesisCompleted - 合成プロセスが完了したときにトリガー
  • Warning - 非致命的な警告が発生したときにトリガー
  • Error - エラーが発生したときにトリガー

ライセンス

MIT