• C++ Builder XE 用sndPlaySound写的简单的语音播报算法


    void __fastcall TForm2::N6Click(TObject *Sender)
    {
    //语音报时
    // char   *wav_handle   ;
    //HRSRC  h =FindResource(HInstance, "Resource_1", "RCData");
    //HGLOBAL  h1=LoadResource(HInstance,h);
    //wav_handle = (char   *)LockResource(h1);
    //sndPlaySound(wav_handle,   SND_MEMORY   |   SND_SYNC);
    AnsiString SoftStr= ExtractFilePath(Application->ExeName);
    AnsiString Wstr=SoftStr +"res\\VoiceTime\\TIMENOW.wav";
    //sndPlaySound(wav_handle,   SND_MEMORY   |   SND_SYNC);
    sndPlaySound(Wstr.c_str() ,SND_ASYNC);
    Sleep(2000);   //延时1秒
    //
    TDateTime dt = Now();
    unsigned short hour,min, sec, msec;
    //dt.DecodeTime(

    dt.DecodeTime(&hour, &min,&sec,&msec);
    if(hour>=0 && hour <=5)
    { //凌晨
     Wstr= SoftStr +"res\\VoiceTime\\AM0.wav";
     sndPlaySound(Wstr.c_str() ,SND_ASYNC);
     Sleep(800);   //延时1秒
     //点
     Wstr= SoftStr +"res\\VoiceTime\\T"+AnsiString().sprintf("%02d",hour) +".wav";
     sndPlaySound(Wstr.c_str() ,SND_ASYNC);
     Sleep(800);   //延时1秒
    }
    else if(hour >5 && hour<=12)
    { //上午
     Wstr= SoftStr +"res\\VoiceTime\\AM1.wav";
     sndPlaySound(Wstr.c_str() ,SND_ASYNC);
     Sleep(800);   //延时1秒
     //点
     Wstr= SoftStr +"res\\VoiceTime\\T"+AnsiString().sprintf("%02d",hour) +".wav";
     sndPlaySound(Wstr.c_str() ,SND_ASYNC);
     Sleep(800);   //延时1秒
    }
    else if(hour>12)
    {   //下午
        Wstr= SoftStr +"res\\VoiceTime\\PM.wav";
        sndPlaySound(Wstr.c_str() ,SND_ASYNC);
        Sleep(800);   //延时1秒
        //点
        Wstr= SoftStr +"res\\VoiceTime\\T"+AnsiString().sprintf("%02d",hour-12) +".wav";
        sndPlaySound(Wstr.c_str() ,SND_ASYNC);
        Sleep(800);   //延时1秒
    }
    else
    { //晚上
        Wstr= SoftStr +"res\\VoiceTime\\EM.wav";
        sndPlaySound(Wstr.c_str() ,SND_ASYNC);
        Sleep(800);   //延时1秒
       //点
        Wstr= SoftStr +"res\\VoiceTime\\T"+AnsiString().sprintf("%02d",hour-12) +".wav";
        sndPlaySound(Wstr.c_str() ,SND_ASYNC);
        Sleep(800);   //延时1秒
    }
    //点
        Wstr= SoftStr +"res\\VoiceTime\\POINT.wav";
        sndPlaySound(Wstr.c_str() ,SND_ASYNC);
        Sleep(800);   //延时1秒
       //分
       if(min/10>0)
       {
        Wstr= SoftStr +"res\\VoiceTime\\T"+AnsiString().sprintf("%02d",min/10*10) +".wav";
        sndPlaySound(Wstr.c_str() ,SND_ASYNC);
        Sleep(800);   //延时1秒
        Wstr= SoftStr +"res\\VoiceTime\\T"+AnsiString().sprintf("%02d",min%10) +".wav";
        sndPlaySound(Wstr.c_str() ,SND_ASYNC);
        Sleep(800);   //延时1秒
       }
       else
       {
        Wstr= SoftStr +"res\\VoiceTime\\T"+AnsiString().sprintf("%02d",min) +".wav";
        sndPlaySound(Wstr.c_str() ,SND_ASYNC);
        Sleep(800);   //延时1秒
       }
        Wstr= SoftStr +"res\\VoiceTime\\Min.wav";
        sndPlaySound(Wstr.c_str() ,SND_ASYNC);
        Sleep(800);   //延时1秒
       //秒
    //    Wstr= SoftStr +"res\\VoiceTime\\T"+AnsiString().sprintf("%02d",sec) +".wav";
    //    sndPlaySound(Wstr.c_str() ,SND_ASYNC);
    //    Sleep(1000);   //延时1秒
    //    Wstr= SoftStr +"res\\VoiceTime\\Min.wav";
    //    sndPlaySound(Wstr.c_str() ,SND_ASYNC);
    //    Sleep(1000);   //延时1秒
    }

  • 相关阅读:
    RocketMQ各种消息的生产与消费Demo
    39. UE5 RPG角色释放技能时转向目标方向
    消息中间件Kafuka学习——初次配置使用
    My Ninety-second - 最长重复子数列 - By Nicolas
    五款最热低代码平台推荐!
    [数据分析与可视化] Python绘制数据地图1-GeoPandas入门指北
    [Druid-1.2.11源码系列]-9-Druid销毁线程
    IP分片、TCP分段
    Docker的数据管理和端口映射实现容器访问
    「学习笔记」记忆化搜索
  • 原文地址:https://blog.csdn.net/lzksword/article/details/127952670