リアルタイム音声認識
iOS SDK
注意:
iOS 11.0以上のバージョンがサポートされています。
SDKを使用する前に、まずインターフェイスプロトコルを読んでください。詳細についてはインターフェイスプロトコルを参照してください。
1 統合手順
-
手動でインポート:
SpeechEvaluate.frameworkをプロジェクトにドラッグしてください。その後、General -> Frameworks, Libraries, and Embedded ContentでSpeechRecognitionSDK.frameworkのEmbedをEmbed&Signに変更してください。 -
podにSocketRocket0.6.0、AFNetworkingが含まれていることを確認してください。
1.1 アプリ関連のアクセス許可を追加してください
- プロジェクトの
info.plistファイルにPrivacy - Microphone Usage Descriptionを追加して、マイクアクセス権限を追加してください。
1.2 呼び出し手順/サンプルコード
認識機能が必要なファイルで、代理アグリーメントEvalListenerを遵守してください。
//主なパラメータを設定する
SDKRecognitionParams *params = [[SDKRecognitionParams alloc] init];
params.appId = @"";
params.appSecret = @"";
params.sample_rate = 16000;//サンプリング率
params.format = @"pcm";//音声エンコード形式
params.realtime = YES;//リアルタイム認識かどうか、trueはリアルタイム認識、falseはひとこと認識を表します
params.langType = @"zh-cmn-Hans-CN";//必須 言語
params.enable_intermediate_result = YES;//中間結果を返すかどうか
params.enable_punctuation_prediction = YES;//後処理でITNを実行するかどうか
params.max_sentence_silence = 450;//音声の区切り検出閾値、マルチメディアの長さがこの閾値を超えると区切りとみなされます。200~1200、単位:ミリ秒、デフォルト値は450です
params.enable_words = YES;//単語情報を返す機能をオンにするかどうか1.2.1 認識クラスを作成し、アクセス権を与えてください
| 名称 | タイプ | 説明 |
|---|---|---|
| listener | id | 認識クラス |
| params | SDKRecognitionParams | パラメーターと構成 |
//エンジンを初期化する
SpeechRecognition *speechManger = [[SpeechRecognition alloc] init];
[speechManger setInitSDK:self params:params];
self.speechManger = speechManger;1.2.2 コールバックメソッド
| 名称 | タイプ | 説明 |
|---|---|---|
| onRecognitionStart | String | エンジン接続開始のコールバックメソッド |
| onRecognitionResult | String | エンジンが内容結果を戻すコールバックメソッド |
| onRecognitionRealtimeResult | String | エンジンが中間結果を戻すコールバックメソッド |
| onRecognitionWarning | String | エンジンが結果警告を戻すコールバックメソッド |
| onRecognitionError | String | エンジンが結果エラーを戻すコールバックメソッド |
/**
* 中間の認識結果を返す
*/
- (void) onRecognitionRealtimeResult: (NSString *) result;
/**
* 認識結果を返す
*/
- (void) onRecognitionResult: (NSString *) result;
/**
* 録音開始成功を表示する
*/
- (void) onRecognitionStart: (NSString *) taskId;
/**
* 認識終了成功を表示する
*/
- (void) onRecognitionStop;
/**
* リアルタイムで録音した音声データを返す
*/
- (void) onRecognitionGetAudio: (NSData *)data;
/**
* エラーコールバック、エラーコードとメッセージを返す
*/
- (void) onRecognitionError: (NSString *)code msg:(NSString*)msg taskId:(nullable NSString*)taskId;
/**
* 警告のコールバック
*/
- (void) onRecognitionWarning: (NSString *)code msg:(NSString*)msg taskId:(nullable NSString*)taskId;1.2.3 パラメーターの説明
| パラメータ | タイプ | 必須 | 説明 | デフォルト値 |
|---|---|---|---|---|
| lang_type | String | はい | 言語オプション | 必須 |
| format | String | いいえ | 音声エンコード形式 | pcm |
| sample_rate | Integer | いいえ | 音声サンプルレート | 16000 |
| enable_intermediate_result | Boolean | いいえ | 中間認識結果を返すかどうか | false |
| enable_punctuation_prediction | Boolean | いいえ | 後処理で句読点を追加するかどうか | false |
| enable_inverse_text_normalization | Boolean | いいえ | 後処理でITNを実行するかどうか | false |
| max_sentence_silence | Integer | いいえ | 音声センテンスのサイレンス検出しきい値、サイレンス時間がこのしきい値を超えるとセンテンスが切り替えられます。有効なパラメータ範囲は200~1200で、単位はミリ秒です | 450 |
| enable_words | Boolean | いいえ | 単語情報を返すかどうか | false |
| enable_modal_particle_filter | Boolean | いいえ | 語気詞フィルタを有効にするかどうか | false |
| hotwords_id | String | いいえ | 単語ID | 無し |
| hotwords_weight | Float | いいえ | 単語ウェイト、値の範囲[0.1, 1.0] | 0.4 |
| correction_words_id | String | いいえ | 強制置換単語庫ID 複数の強制置換単語庫IDを使用することができ、各IDは縦線 |で区切られます;all は全ての強制置換単語庫IDを使用することを意味します。 | 無し |
| forbidden_words_id | String | いいえ | NG単語ID 複数のNG単語IDを使用することができ、各IDは縦線 |で区切られます;all は全てのNG単語IDを使用することを意味します。 | 無し |
1.2.4 開始/停止認識
<1>認識開始(sdk内部録音)
[self.speechManger startRecording];
認識終了
[self.speechManger stopRecording];
<2>ファイル認識 (録音ファイルのローカルパスを直接渡す)
[self.speechManger startRecognitionOralWithWavPath:@"wav音声ファイルのパス"];
<3>音声データ認識(sdk外部録音、またはファイルをNSDataデータに変換して認識)
- (void)doStart:(FinishBlock)finishBlock;
- (BOOL)doSetData:(NSData *) data isLast:(bool)isLast;
呼び出し方法
[self.speechManger doStart:^(_Bool success) {
if (success) {
if(最後のセグメントに音声がある場合){
[self.speechManger doSetData:data isLast:YES];
}else{
[self.speechManger doSetData:data isLast:NO];
}
}
}];1.2.5 強制的な文区切り
[self.speechManger sentenceEnd];1.2.6 カスタマイズされた話者
[self.speechManger speakerStart:@"speaker_name"];