add 2mic and 4mic res toghter, thus support 2mic and 4mic at the same time
This commit is contained in:
parent
5fa5110f62
commit
a2ebc69e64
|
@ -47,10 +47,10 @@ start_voice() {
|
|||
echo $DBUS_SESSION_BUS_ADDRESS >> $LOG
|
||||
procd_open_instance
|
||||
procd_set_param oom_adj $OOM_ADJ
|
||||
procd_set_param command $PROG_VOICE --work-mode=2
|
||||
procd_set_param command $PROG_VOICE --work-mode=3
|
||||
procd_set_param respawn
|
||||
procd_append_param limits core=unlimited
|
||||
procd_set_param env DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS --work-mode=2
|
||||
procd_set_param env DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS --work-mode=3
|
||||
procd_close_instance
|
||||
}
|
||||
|
||||
|
|
|
@ -62,6 +62,7 @@ typedef enum {
|
|||
WorkMode_R311_PV1 = 0,
|
||||
WorkMode_R311_PV1_CES = 1,
|
||||
WorkMode_R311_C1_EVB = 2,
|
||||
WorkMode_R311_C1_EVB_2MIC = 3,
|
||||
} WorkMode;
|
||||
|
||||
void setVss(VoiceSessionStatus st);
|
||||
|
|
|
@ -568,7 +568,8 @@ static void usage() {
|
|||
"-l, --list-devices list all soundcards and digital audio "
|
||||
"devices\n"
|
||||
"-L, --list-pcms list device names\n"
|
||||
"-w, --work-mode=# work mode: 0: r311_pv1(dmic) 1:r311_pv1_ces(nmic) 2: r311_c1evb\n"
|
||||
"-w, --work-mode=# work mode: 0: r311_pv1(dmic) 1:r311_pv1_ces(nmic) 2: r311_c1evb_4mic\n"
|
||||
" 3:r311_c1evb_2mic\n"
|
||||
"-f, --list-format list all format in alsa\n"
|
||||
"-r, --just-record Only record voice to file\n"
|
||||
"-t, --type=# sample format (case insensitive): raw,wav\n"
|
||||
|
|
|
@ -299,6 +299,33 @@ int Netease_nduilite_init(duilite_callback wakeup_callback,
|
|||
char *vad_cfg;
|
||||
|
||||
switch (getWorkMode()) {
|
||||
case WorkMode_R311_C1_EVB_2MIC:
|
||||
auth_cfg = "{\"appKey\":\"15205715844583be\",\"secretKey\":"
|
||||
"\"e3eee41c3276bd027f2814f6cf3b8991\",\"deviceId\": \"28ede0d08139\","
|
||||
"\"provision\":\"/usr/share/netease/duilite/auth/"
|
||||
"aiengine-2.9.5-15205715844583be.provision\", "
|
||||
"\"serialNumber\":\"/mnt/UDISK/device.number\"}";
|
||||
|
||||
///*初始化时默认采用夜间唤醒阈值,thresh=0.59;major=0;thresh2=0.36;
|
||||
///时间同步成功后再根据实际时间来切换阈值*/
|
||||
cfg = "{\"aecBinPath\": "
|
||||
"\"/usr/share/netease/duilite/fespa/"
|
||||
"AEC_ch4-2-ch2_1ref_common_20180731_v0.9.4.bin\", "
|
||||
"\"wakeupBinPath\": "
|
||||
"\"/usr/share/netease/duilite/fespa/"
|
||||
"wakeup_aifar_comm_20180104.bin\", "
|
||||
"\"beamformingBinPath\": "
|
||||
"\"/usr/share/netease/duilite/fespa/"
|
||||
"UDA_asr_ch2_2_ch2_30mm_20181129_v1.1.0.8_asrpost0.bin\", "
|
||||
"\"env\": \"words=di da di da;thresh=0.05;major=0;dcheck=0;thresh2=0.05;\", "
|
||||
"\"rollBack\": 0}";
|
||||
|
||||
#if USED_NETEASE_DUILITE_VAD
|
||||
vad_cfg = "{\"resBinPath\": "
|
||||
"\"/usr/share/netease/duilite/vad/"
|
||||
"vad_aihome_v0.8.bin\",\"pauseTime\": 500}";
|
||||
#endif
|
||||
break;
|
||||
case WorkMode_R311_C1_EVB:
|
||||
auth_cfg = "{\"appKey\":\"15205715844583be\",\"secretKey\":"
|
||||
"\"e3eee41c3276bd027f2814f6cf3b8991\",\"deviceId\": \"28ede0d08139\","
|
||||
|
|
|
@ -453,6 +453,18 @@ static void *RecordThread(void *param) {
|
|||
exit(1);
|
||||
}
|
||||
break;
|
||||
|
||||
case WorkMode_R311_C1_EVB_2MIC:
|
||||
#define ADC_CH_NUM 4
|
||||
#define VIRTUAL_CH 0
|
||||
#define BIT_PER_CH 16
|
||||
tmpbufsize = record->chunk_size * (ADC_CH_NUM + VIRTUAL_CH) * BIT_PER_CH/8;
|
||||
tmpbuf = (char *)calloc(1, tmpbufsize);
|
||||
if (!tmpbuf) {
|
||||
n_error("Can not malloc space for tmpbuf,exit!\n");
|
||||
exit(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (record->backupfilefd > 0 &&
|
||||
|
@ -466,6 +478,47 @@ static void *RecordThread(void *param) {
|
|||
n_toast("Running:%d, work mode:%d\n", record->runing, getWorkMode());
|
||||
while (!!record->runing) {
|
||||
switch (getWorkMode()) {
|
||||
case WorkMode_R311_C1_EVB_2MIC:
|
||||
if (pcm_read(record->pcm_cfg->adc) ==
|
||||
record->pcm_cfg->adc->chunk_size) {
|
||||
if (pcm_read(record) == record->chunk_size) {
|
||||
short *mic = (short *)record->buffer;
|
||||
short *resample = (short *)record->pcm_cfg->adc->buffer;
|
||||
short *p = (short *)tmpbuf;
|
||||
for (i = 0; i < record->chunk_size; i++) {
|
||||
//mic
|
||||
// mic no, actual sofware no
|
||||
p[1 - 1] = mic[2 -1];
|
||||
p[2 - 1] = mic[3 - 1];
|
||||
|
||||
//resample
|
||||
p[3 - 1] = resample[0];
|
||||
p[4 - 1] = resample[1];
|
||||
|
||||
resample += 2;
|
||||
p += 4;
|
||||
mic += 4;
|
||||
}
|
||||
|
||||
if (record->backupfilefd > 0) {
|
||||
xwrite(record->backupfilefd, tmpbuf,
|
||||
tmpbufsize);
|
||||
fdcount += tmpbufsize;
|
||||
}
|
||||
queue_write(record->queue, tmpbuf,
|
||||
tmpbufsize);
|
||||
memset(tmpbuf, 0, tmpbufsize);
|
||||
} else {
|
||||
fprintf(stderr, "short read, read %d frames/n", ret);
|
||||
LOG_EX(LOG_Error, "ALSA Short Read, Read %d Frames: %d\n",
|
||||
ret);
|
||||
}
|
||||
} else {
|
||||
// read dmic data and throw
|
||||
pcm_read(record);
|
||||
printf("Read adc codec error!\n");
|
||||
}
|
||||
break;
|
||||
case WorkMode_R311_C1_EVB:
|
||||
if (pcm_read(record->pcm_cfg->adc) ==
|
||||
record->pcm_cfg->adc->chunk_size) {
|
||||
|
@ -646,6 +699,7 @@ static void *RecordThread(void *param) {
|
|||
|
||||
//exit, clear
|
||||
switch (getWorkMode()) {
|
||||
case WorkMode_R311_C1_EVB_2MIC:
|
||||
case WorkMode_R311_C1_EVB:
|
||||
if (tmpbuf) {
|
||||
free(tmpbuf);
|
||||
|
@ -714,7 +768,7 @@ int Neteasae_record_start(struct pcm_config *pcm_cfg) {
|
|||
QueueReadThread, (void *)pcm_cfg->recordata);
|
||||
|
||||
break;
|
||||
|
||||
case WorkMode_R311_C1_EVB_2MIC:
|
||||
case WorkMode_R311_C1_EVB:
|
||||
// sndes7210.0-0040 for 4 mic
|
||||
pcm_cfg->device_name = "hw:1,0";
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
毻氏茲咸挝葯茪湚任葹仙浫茩炍螢湚毴蓹褪认勢憺嫋墯稇墣敋紣崥珕彋屳扭轀懷垶敋姀萦轀懷槏瀿萦轀懷瀸嵮崥溳虞湋褕灁殜弽殰萦轀懷洆槏殞咻虞湋褜殤嬔寙戄虞湋褜泴茛虞墯崒枑戄泡灃殤槚憵彝哑咽萦輿殙枩毉殬枌媿嗇泡棆嫃牛校袨妺椦瀼栄灃審殮湕褱悞P洑墫湚萦輿殙枩毝洬啅気泡挒溳虞殗彇崥菖萃鲜弦瓮姨陷虞瀼彺殕菖菸释鲜任是怂是虧気<EFBFBD>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue