• 做了一个报听写的软件 平时给孩子报听写 就省事太多了 支持语文 英语


    这里主要用到了TTS的语音朗读SDK

    最近玩语音朗读的时候比较多,也在两个软件中应用过。其实大多语音朗读的代码还是很好写的,只是像判断TTS语音朗读是否结束或者当前语音引擎的状态稍微要查找一下参数。这里记录一下:

    原本在网上查到的一条关于判断TTS朗读完成事件的代码WaitForSingleObject(spvoice.SpeakCompleteEvent, 200);在delphi 中使用时并没有达到原本看似应该有的功效,测试时发现这东西只是在TTS合成朗读流后就返回了,说白了就是TTS刚要朗读,就被判定成朗读完成了。仔细查找了一下spvoice的参数,里面有个statdus属性,这个返回的对象中可以获取一些有用的属性参数如:RunningState(运行状态), inputWordLegth(朗读句子所有词汇长度总和),inputWordPosition(当前朗读词汇的末位置)……

    其中RunningState有三个状态:    朗读文本被全部渲染合成后返回 SRSEDone = 1    正在朗读中会返回 SRSEIsSpeaking = 2 暂停朗读时会返回0

    利用这三个属性就可以判断朗读是否已经完成,加两个计时器,朗读句子开始时,启动判断朗读状态的计时器,完成后再重新激活计时器进行朗读:

    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    timer1.Enabled:=false;
    learnTTS.Speak('this is voa explorations in special english!',1);
    WaitForSingleObject(learnTTS.SpeakCompleteEvent, 200);
    timer2.Enabled:=true;
    end;

    procedure TForm1.Timer2Timer(Sender: TObject);
    begin
    edit1.Text:=inttostr(learnTTS.Status.RunningState);
    if learnTTS.Status.RunningState=1 then //朗读完成后会返回1
    timer1.Enabled:=true;
    end;

  • 相关阅读:
    Vulnhub-靶机-DJINN: 1
    8.8-9 sqlmap从入门到精通-其中小技巧-分析大文件日志技巧
    Vulnhub-靶机-EVM: 1
    8.7 sqlmap从入门到精通-Linux服务器登录连接日志分析
    Linux操作系统常规的分析SSH登录日志需要使用的命令和记录
    CentOS最小安装无法使用ifconfig命令
    CentOS7下安装FTP服务
    解决Centos7安装后无法联网的问题
    Maven引入本地jar包
    Tomcat下安装solr6.x
  • 原文地址:https://www.cnblogs.com/plug/p/4558094.html
Copyright © 2020-2023  润新知