简介
AIUI文档中心
AIUI例程修改后源码
在AIUI平台创建应用,下载linux sdk,但是sdk默认内部录音不可用,需要修改录音输入
使用mic录音
录音来源
修改AIUI配置文件中的data_source字段可以指定AIUI录音来源,值为sdk时使用AIUI内部录音,使用CMD_START_RECORD、CMD_STOP_RECORD命令进行控制。另一取值user,表示由外部写入录音数据,使用CMD_WRITE、CMD_STOP_WRITE命令通知AIUI数据写入和写入结束。
注:data_source取值为sdk,仅在Android平台SDK下可用,其他平台只能取值user,通过外部输入音频数据。
AIUI例程修改代码
编译需要ALSA支持,因为mic输入需要
static void mic_start()
{
printf("mic_start\n");
int errcode;
errcode = sr_init(&iat, NULL, SR_MIC, &recnotifier);
if (errcode)
{
printf("speech recognizer init failed\n");
return;
}
iat.write_recorder_data = writeAudioRecord;
errcode = sr_start_listening(&iat);
if (errcode)
{
printf("start listen failed %d\n", errcode);
}
}
static void mic_stop()
{
printf("mic_stop\n");
int errcode = sr_stop_listening(&iat);
if (errcode)
{
printf("stop listening failed %d\n", errcode);
}
IAIUIMessage *msg = IAIUIMessage::create(
AIUIConstant::CMD_STOP_WRITE,
0,
0,
"data_type=audio");
agent->sendMessage(msg);
msg->destroy();
sr_uninit(&iat);
}
// 写入测试音频
void writeAudio()
{
// if (NULL != agent) {
// IAIUIMessage* stopMsg =
// IAIUIMessage::create(AIUIConstant::CMD_START_RECORD, 0, 0, "data_type=audio");
// agent->sendMessage(stopMsg);
// stopMsg->destroy();
// }
mic_start();
}
void stopAudio()
{
// if (NULL != agent)
// {
// IAIUIMessage *stMsg = IAIUIMessage::create(AIUIConstant::CMD_STOP_RECORD);
// agent->sendMessage(stMsg);
// stMsg->destroy();
// IAIUIMessage *stopMsg =
// IAIUIMessage::create(AIUIConstant::CMD_STOP_SAVE, 0, 0, "data_type=raw_audio");
// agent->sendMessage(stopMsg);
// stopMsg->destroy();
// }
mic_stop();
}
cmakelist.txt 增加speech_recognizer.c linuxrec.c等,增加include_directories,增加target_link_libraries