作者 王振宇

修复循环播放的文本切换实时喊话文本播放不立刻停止的问题

... ... @@ -124,7 +124,7 @@ int JZ_TtsPlayFeature(int len,char* data)
{
usleep(100*1000);
}
usleep(600*1000);
usleep(700*1000);
if(GetSpeakerMode() == 2)
{
TTS(tts_tone,100,tts_speed,len,data);
... ...
... ... @@ -249,8 +249,10 @@ static T_UAVReturnCode StartPlay(void)
}
else
{
SetSpeakerMode(1);//实时喊话
stop_music();
Opus_RealTimeSpeak_AbnormalInterrupt();
Init_opus();
SetSpeakerMode(1);//实时喊话
SetSpeakerState(UAV_WIDGET_SPEAKER_STATE_PLAYING);
break;
}
... ... @@ -429,6 +431,7 @@ static T_UAVReturnCode SpeakerControl(T_UavWidgetSpeakerControl *speakerControl)
case 8://音频暂停
break;
case 9://音频停止
LOG_INFO("音频停止");
WidgetPlayFlag = 0;//用于退出录音喊话
stop_music();
set_paly_state(0);
... ... @@ -447,6 +450,7 @@ static T_UAVReturnCode SpeakerControl(T_UavWidgetSpeakerControl *speakerControl)
case 14://播放音频
if(readyflag == 1)//喊话器准备就绪
{
LOG_INFO("播放录音");
SetSpeakerMode(3);
JZ_loop_playback_create();//录音喊话线程
}
... ... @@ -459,8 +463,10 @@ static T_UAVReturnCode SpeakerControl(T_UavWidgetSpeakerControl *speakerControl)
break;
case 17://文本传输
SetSpeakerMode(2);
set_paly_state(2);
break;
case 18://文本传输结束
LOG_INFO("播放文本");
JZ_TtsPlayFeature(text_len,(char *)text_buf);//播放文本
break;
... ...
... ... @@ -611,17 +611,20 @@ void *TTS_first(void *arg)
//TTS合成线程
void *TTS_flie(void *arg)
{
SetTtsStatus(1);
set_amplifier(1);
play_tts(tts_tone,tts_volume,tts_speed,ttsdata);//生成文件
set_amplifier(0);
SetTtsStatus(0);
set_volume(now_volume);//恢复音量
delay(500);
if(play_mode == 1)
{
delay(1000);
}
SetTtsStatus(0);
}
//TTS_mobie合成线程
... ...