ailia SpeechのAPIの概要
基本的な使用方法
ailia Speechでは、ailiaSpeechCreateでインスタンスを作成、ailiaSpeechOpenModelFileでモデルを開き、ailiaSpeechPushInputDataでPCMを入力、ailiaSpeechBufferedで十分なPCMが入力されたか確認、ailiaSpeechTranscribeでテキスト化、ailiaSpeechGetTextで認識結果を取得可能です。
ailiaSpeechPushInputDataは音声全体を入力する必要はなく、少しずつ音声を供給することが可能であり、マイクからのリアルタイム入力を受けることができます。
#include "ailia.h"
#include "ailia_audio.h"
#include "ailia_speech_util.h"
void main(void){
struct AILIASpeech* net;
int memory_mode = AILIA_MEMORY_REDUCE_CONSTANT | AILIA_MEMORY_REDUCE_CONSTANT_WITH_INPUT_INITIALIZER | AILIA_MEMORY_REUSE_INTERSTAGE;
while(true){
unsigned int buffered = 0;
if (buffered == 1){
unsigned int count = 0;
for (unsigned int idx = 0; idx < count; idx++){
printf("[%02d:%02d.%03d --> %02d:%02d.%03d] ", (int)cur_time/60%60,(int)cur_time%60, (int)(cur_time*1000)%1000, (int)next_time/60%60,(int)next_time%60, (int)(next_time*1000)%1000);
printf(
"%s\n", text.
text);
}
}
unsigned int complete = 0;
if (complete == 1){
break;
}
}
}
ライブ変換
ライブ変換を有効にするには、ailiaSpeechCreateの引数にAILIA_SPEECH_FLAG_LIVEを与えます。
プレビューは、IntermediateCallbackに通知されます。
int intermediate_callback(void *handle, const char *text){
printf("%s\n", text);
return 0;
}
VAD
無音検知を使用する場合、ailiaSpeechCreate APIの後にailiaSpeechOpenVAD APIを呼び出します。
ポストプロセス
音声認識結果に対して、音声認識誤り訂正や、翻訳などの後処理を適用する場合、ailiaSpeechCreate APIの後にailiaSpeechOpenPostProcessFile APIを呼び出し、ailiaSpeechTranscribeの後に、ailiaSpeechPostProcess APIを呼び出します。
音声認識誤り訂正を使用する場合
翻訳を使用する場合
英語から日本語
日本語から英語
共通処理
GPUの使用
GPUを使用するには、ailiaSpeechCreateのenv_id引数にGPUのenv_idを指定します。 デフォルトでは、AILIA_ENVIRONMENT_ID_AUTOが指定されており、CPUで推論が行われます。 GPUのenv_idを取得する方法は、ailia_speech_sample.cppを参照してください。
APIの呼び出しフロー
各APIの関係図は下記となります。
音声認識
flowchart
A(Microphone or File)-->B
B[ailiaSpeechPushInputData API]-->C
C[ailiaSpeechBuffered API]-->D
C-->B
D[ailiaSpeechTranscribe API]-->E
E[ailiaSpeechGetTextCount API]-->F
F[ailiaSpeechGetText API]-->K
K[ailiaSpeechComplete API] --> B
音声認識(ポストプロセス付き)
flowchart
A(Microphone or File)-->B
B[ailiaSpeechPushInputData API]-->C
C[ailiaSpeechBuffered API]-->D
C-->B
D[ailiaSpeechTranscribe API]-->E
E[ailiaSpeechGetTextCount API]-->F
F[ailiaSpeechGetText API]-->K
F-->G
G[ailiaSpeechPostProcess API]-->H
H[ailiaSpeechGetTextCount API]-->I
I[ailiaSpeechGetText API]-->K
K[ailiaSpeechComplete API] --> B
ポストプロセスのみ
flowchart
F[ailiaSpeechSetText API]-->G
G[ailiaSpeechPostProcess API]-->I
I[ailiaSpeechGetText API]