MPF企业版-简介【01】 【QQ群:206378966】

好消息,MPF计划2017年11月份全部开源关注【QQ群:206378966】。



1. 什么是MPF

        MPF是居于DUI思想的一套界面引擎,采用纯c++开发,实现完整的消息处理机制、渲染引擎分离以及灵活的控件扩展,是一款c++真正意义上的界面和业务逻辑分离的界面引擎。

MPF通过把界面元素抽象为一个一个单独的绘制单元,然后通过模版的概念把这些绘制单元重新组合成一个逻辑控件,因此,界面引擎实现最核心的渲染和绘制单元,通过组合得到各种各样的逻辑控件,从而满足不断变化的业务需求,而且,从根本上使得界面的开发简单、高效,业务真正地只关心自己的业务逻辑,至于业务数据的展现则通过界面引擎数据绑定核心层自动完成。

        下面是MPF一部分控件截图:

         

2. MPF的优势
        MPF是目前c++领域优秀的界面引擎,其采用了和传统完全不一样的实现方式,传统的DUI界面库一般使用的是界面驱动数据;而MPF采用的是数据驱动界面。
传统界面驱动数据的界面引擎缺点:
  • 用户的业务数据和界面耦合性较高;
  • 数据和UI的交互开发量较大,而且容易出错;
  • 整个系统的扩展性和灵活性受到极大限制;
  • 系统开发效率相对较低,开发的代码量大;
  • 几乎不支持键盘操作。
MPF界面引擎采用数据驱动界面方式实现,其特点如下:
  • 实现数据绑定,自动完成用户数据和UI控件同步更新,用户真正只需专注业务逻辑,开发效率更高效、更智能、更轻松;
  • 对控件抽象,居于类级别控件属性机制,有效节约系统占用的内存空间;
  • 实现完整的虚拟显示机制,轻松支持100000+数据项的呈现,大幅加速应用程序的启动速度和减少内存的占用;
  • 完善的动画框架,用户可以轻松开发各种高效、酷炫的动画,满足实际业务需求,提升产品的用户体验;
  • 完整的键盘支持,没有鼠标也能完成界面操作;
  • 先进资源结构设计,可轻松实现多语言、换肤效果(能够更换布局、内容);
  • 千锤百炼的重构和优化,使得Sharpui在内存和性能都有完美体现。


        上述简单说明了MPF相对传统的DUI界面特有的优势,后面会通过实际代码演示数据驱动界面的强大、简单和高效。


3. MPF整体结构
        下图是整个MPF的整体结构:
         


4. Hello,MPF
        MPF进行项目开发简单、高效,下面给出一个简单的事例让大家有个直观的印象,实现一个Hello,MPF的窗口显示:
        布局文件描述如下:


        <?xml encoding="utf-8" ?>
        <Window Name="window1" >
            <Window.Resources >
                <SolidColorBrush x:Key="Window_Bk" Color="#288ADD" />
                <SolidColorBrush x:Key="Border_Bk" Color="#298ADD" />

                <Style TargetType="Window">
                    <Setter Property="Background" Value="{DynamicResource Window_Bk}" />
                    <Setter Property="BorderBrush" Value="{DynamicResource Border_Bk}" />
                    <Setter Property="BorderThickness" Value="0" />
                    <Setter Property="Template">
                       <Setter.Value>
                            <ControlTemplate TargetType="Window">
                                <Border Background="{TemplateBinding}" CornerRadius="2.5"
                                        BorderBrush="{TemplateBinding}" BorderThickness="{TemplateBinding}" >
                                    <AdornerDecorator>
                                        <ContentPresenter />
                                    </AdornerDecorator>
                                </Border>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </Window.Resources>
            <Grid>
                <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="Hello,MPF" />
            </Grid>

        </Window>


        下面附上几个Demon截图(如需要进一步了解请加QQ群:206378966):

        MPF主要控件演示界面:

        


        主要Demon截图:

        

        

        

        

        


2025-07-30 10:09:31.617300 98.33% [DEBUG] apt_task.c:335 () Process Message [MRCPv2ConnectionAgent] [0x7fa6f0001860;1;0] 2025-07-30 10:09:31.617300 98.33% [INFO] mrcp_client_connection.c:551 (ASR-41) Send MRCPv2 Data 172.29.121.237:58334 <-> 172.29.121.237:1544 [291 bytes] MRCP/2.0 291 RECOGNIZE 1 Channel-Identifier: 1e7deafcb1bb43e9@speechrecog Content-Type: text/uri-list Cancel-If-Queue: false Start-Input-Timers: true No-Input-Timeout: 5000 Vendor-Specific-Parameters: barge_in=true;break_on_speech=false Content-Length: 25 builtin:speech/transcribe 2025-07-30 10:09:31.617300 98.33% [DEBUG] apt_poller_task.c:244 () Wait for Messages [MRCPv2ConnectionAgent] timeout [5000] 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_poller_task.c:267 () Process Signalled Descriptor [MRCPv2ConnectionAgent] 2025-07-30 10:09:32.157297 98.33% [INFO] mrcp_client_connection.c:656 () Receive MRCPv2 Data 172.29.121.237:58334 <-> 172.29.121.237:1544 [83 bytes] MRCP/2.0 83 1 200 IN-PROGRESS Channel-Identifier: 1e7deafcb1bb43e9@speechrecog 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_task.c:263 () Signal Message to [MRCP Client] [0x7fa6ec001630;2;3] 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_poller_task.c:249 () Wait for Messages [MRCPv2ConnectionAgent] 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_task.c:335 () Process Message [MRCP Client] [0x7fa6ec001630;2;3] 2025-07-30 10:09:32.157297 98.33% [INFO] mrcp_client_session.c:498 (ASR-41) Raise App MRCP Response ASR-41 <1e7deafcb1bb43e9> 2025-07-30 10:09:32.157297 98.33% [DEBUG] mod_unimrcp.c:3642 (ASR-41) RECOGNIZE IN PROGRESS 2025-07-30 10:09:32.157297 98.33% [DEBUG] mod_unimrcp.c:1589 (ASR-41) READY ==> PROCESSING 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_consumer_task.c:135 () Wait for Messages [MRCP Client] 2025-07-30 10:09:32.157297 98.33% [INFO] mod_unimrcp.c:1636 speech_handle: name = unimrcp, rate = 8000, speed = 0, samples = 160, voice = , engine = unimrcp, param = (null) 2025-07-30 10:09:32.157297 98.33% [INFO] mod_unimrcp.c:1639 voice = (null), rate = 8000 2025-07-30 10:09:32.157297 98.33% [DEBUG] mod_unimrcp.c:688 (TTS-42) audio queue created 2025-07-30 10:09:32.157297 98.33% [NOTICE] mrcp_application.c:117 (TTS-42) Create MRCP Handle 0x7fa6e8070348 [uni2] 2025-07-30 10:09:32.157297 98.33% [INFO] mrcp_client_session.c:131 (TTS-42) Create Channel TTS-42 <new> 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_task.c:263 () Signal Message to [MRCP Client] [0x7fa6e8011190;4;0] 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_task.c:335 () Process Message [MRCP Client] [0x7fa6e8011190;4;0] 2025-07-30 10:09:32.157297 98.33% [INFO] mrcp_client_session.c:385 (TTS-42) Receive App Request TTS-42 <new> [2] 2025-07-30 10:09:32.157297 98.33% [INFO] mrcp_client.c:697 (TTS-42) Add MRCP Handle TTS-42 <new> 2025-07-30 10:09:32.157297 98.33% [DEBUG] mrcp_client_session.c:1277 (TTS-42) Dispatch App Request TTS-42 <new> [2] 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_task.c:263 () Signal Message to [MRCPv2ConnectionAgent] [0x7fa6f0001860;1;0] 2025-07-30 10:09:32.157297 98.33% [NOTICE] mrcp_client_session.c:717 (TTS-42) Add Control Channel TTS-42 <new@speechsynth> 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_poller_task.c:259 () Process Poller Wakeup [MRCPv2ConnectionAgent] 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_task.c:335 () Process Message [MRCPv2ConnectionAgent] [0x7fa6f0001860;1;0] 2025-07-30 10:09:32.157297 98.33% [DEBUG] mrcp_client_session.c:743 (TTS-42) Add Media Termination TTS-42 <new@media-tm> 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_task.c:263 () Signal Message to [MRCP Client] [0x7fa6ec001630;2;0] 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_poller_task.c:249 () Wait for Messages [MRCPv2ConnectionAgent] 2025-07-30 10:09:32.157297 98.33% [DEBUG] mrcp_client_session.c:772 (TTS-42) Add Media Termination TTS-42 <new@rtp-tm> 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_task.c:263 () Signal Message to [MediaEngine] [0x7fa6f0008640;1;0] 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_consumer_task.c:135 () Wait for Messages [MRCP Client] 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_task.c:335 () Process Message [MRCP Client] [0x7fa6ec001630;2;0] 2025-07-30 10:09:32.157297 98.33% [DEBUG] mrcp_client_session.c:292 (TTS-42) Control Channel Added TTS-42 <new@speechsynth> 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_consumer_task.c:135 () Wait for Messages [MRCP Client] 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_task.c:335 () Process Message [MediaEngine] [0x7fa6f0008640;1;0] 2025-07-30 10:09:32.157297 98.33% [DEBUG] mpf_context.c:180 () Add Media Context TTS-42 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_task.c:263 () Signal Message to [MRCP Client] [0x7fa6c00037d0;3;0] 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_task.c:335 () Process Message [MRCP Client] [0x7fa6c00037d0;3;0] 2025-07-30 10:09:32.157297 98.33% [DEBUG] mrcp_client_session.c:939 (TTS-42) Media Termination Added TTS-42 <new@media-tm> 2025-07-30 10:09:32.157297 98.33% [DEBUG] mrcp_client_session.c:939 (TTS-42) Media Termination Added TTS-42 <new@rtp-tm> 2025-07-30 10:09:32.157297 98.33% [INFO] mrcp_client_session.c:409 (TTS-42) Send Offer TTS-42 <new> [c:1 a:1 v:0] to 172.29.121.237:8060 2025-07-30 10:09:32.157297 98.33% [INFO] mrcp_sofiasip_client_agent.c:357 (TTS-42) Local SDP TTS-42 <new> v=0 o=FreeSWITCH 0 0 IN IP4 172.29.121.237 s=- c=IN IP4 172.29.121.237 t=0 0 m=application 9 TCP/MRCPv2 1 a=setup:active a=connection:existing a=resource:speechsynth a=cmid:1 m=audio 4084 RTP/AVP 0 8 96 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:96 L16/8000 a=recvonly a=mid:1 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_consumer_task.c:135 () Wait for Messages [MRCP Client] 2025-07-30 10:09:32.157297 98.33% [INFO] mrcp_sofiasip_client_agent.c:617 () Receive SIP Event [nua_i_state] Status 0 INVITE sent [uni2] 2025-07-30 10:09:32.157297 98.33% [NOTICE] mrcp_sofiasip_client_agent.c:555 (TTS-42) SIP Call State TTS-42 [calling] 2025-07-30 10:09:32.157297 98.33% [INFO] mrcp_sofiasip_client_agent.c:617 () Receive SIP Event [nua_r_invite] Status 200 OK [uni2] 2025-07-30 10:09:32.157297 98.33% [INFO] mrcp_sofiasip_client_agent.c:617 () Receive SIP Event [nua_i_state] Status 200 OK [uni2] 2025-07-30 10:09:32.157297 98.33% [NOTICE] mrcp_sofiasip_client_agent.c:555 (TTS-42) SIP Call State TTS-42 [ready] 2025-07-30 10:09:32.157297 98.33% [INFO] mrcp_sofiasip_client_agent.c:441 (TTS-42) Remote SDP TTS-42 <new> v=0 o=UniMRCPServer 2123169851781563314 2271541858673750442 IN IP4 172.29.121.237 s=- c=IN IP4 172.29.121.237 t=0 0 m=application 1544 TCP/MRCPv2 1 a=setup:passive a=connection:existing a=channel:8e98b0a10aca453c@speechsynth a=cmid:1 m=audio 5078 RTP/AVP 0 a=rtpmap:0 PCMU/8000 a=sendonly a=mid:1 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_task.c:263 () Signal Message to [MRCP Client] [0x7fa6f8005ec0;1;0] 2025-07-30 10:09:32.157297 98.33% [INFO] mrcp_sofiasip_client_agent.c:617 () Receive SIP Event [nua_i_active] Status 200 Call active [uni2] 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_task.c:335 () Process Message [MRCP Client] [0x7fa6f8005ec0;1;0] 2025-07-30 10:09:32.157297 98.33% [INFO] mrcp_client_session.c:149 (TTS-42) Receive Answer TTS-42 <new> [c:1 a:1 v:0] Status 200 2025-07-30 10:09:32.157297 98.33% [DEBUG] mrcp_client_session.c:1136 (TTS-42) Modify Control Channel TTS-42 <8e98b0a10aca453c> 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_task.c:263 () Signal Message to [MRCPv2ConnectionAgent] [0x7fa6f0001860;1;0] 2025-07-30 10:09:32.157297 98.33% [DEBUG] mrcp_client_session.c:1174 (TTS-42) Modify Media Termination TTS-42 <8e98b0a10aca453c@rtp-tm> 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_task.c:263 () Signal Message to [MediaEngine] [0x7fa6f0008780;1;0] 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_consumer_task.c:135 () Wait for Messages [MRCP Client] 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_poller_task.c:259 () Process Poller Wakeup [MRCPv2ConnectionAgent] 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_task.c:335 () Process Message [MRCPv2ConnectionAgent] [0x7fa6f0001860;1;0] 2025-07-30 10:09:32.157297 98.33% [INFO] mrcp_client_connection.c:456 (TTS-42) Add Control Channel <8e98b0a10aca453c@speechsynth> 172.29.121.237:58334 <-> 172.29.121.237:1544 [2] 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_task.c:263 () Signal Message to [MRCP Client] [0x7fa6ec001630;2;1] 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_poller_task.c:249 () Wait for Messages [MRCPv2ConnectionAgent] 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_task.c:335 () Process Message [MRCP Client] [0x7fa6ec001630;2;1] 2025-07-30 10:09:32.157297 98.33% [DEBUG] mrcp_client_session.c:309 (TTS-42) Control Channel Modified TTS-42 <8e98b0a10aca453c@speechsynth> 2025-07-30 10:09:32.157297 98.33% [DEBUG] apt_consumer_task.c:135 () Wait for Messages [MRCP Client] 2025-07-30 10:09:32.177292 98.33% [DEBUG] apt_task.c:335 () Process Message [MediaEngine] [0x7fa6f0008780;1;0] 2025-07-30 10:09:32.177292 98.33% [INFO] mpf_rtp_stream.c:331 () Enable RTP Session 172.29.121.237:4084 2025-07-30 10:09:32.177292 98.33% [DEBUG] mpf_bridge.c:149 () Create Linear Audio Bridge TTS-42 2025-07-30 10:09:32.177292 98.33% [INFO] mpf_rtp_stream.c:505 () Open RTP Receiver 172.29.121.237:4084 <- 172.29.121.237:5078 playout [0 ms] bounds [0 - 600 ms] adaptive [0] skew detection [1] 2025-07-30 10:09:32.177292 98.33% [INFO] mpf_bridge.c:111 () Media Path TTS-42 Source->[PCMU/8000/1]->Decoder->[LPCM/8000/1]->Bridge->[LPCM/8000/1]->Sink 2025-07-30 10:09:32.177292 98.33% [DEBUG] apt_task.c:263 () Signal Message to [MRCP Client] [0x7fa6c00037d0;3;0] 2025-07-30 10:09:32.177292 98.33% [DEBUG] apt_task.c:335 () Process Message [MRCP Client] [0x7fa6c00037d0;3;0] 2025-07-30 10:09:32.177292 98.33% [DEBUG] mrcp_client_session.c:980 (TTS-42) Media Termination Modified TTS-42 <8e98b0a10aca453c@rtp-tm> 2025-07-30 10:09:32.177292 98.33% [INFO] mrcp_client_session.c:453 (TTS-42) Raise App Response TTS-42 <8e98b0a10aca453c> [2] SUCCESS [0] 2025-07-30 10:09:32.177292 98.33% [DEBUG] mod_unimrcp.c:1905 (TTS-42) SYNTHESIZER channel is ready, codec = LPCM, sample rate = 8000 2025-07-30 10:09:32.177292 98.33% [DEBUG] mod_unimrcp.c:1589 (TTS-42) CLOSED ==> READY 2025-07-30 10:09:32.177292 98.33% [DEBUG] mod_unimrcp.c:1067 (TTS-42) channel is ready 2025-07-30 10:09:32.177292 98.33% [DEBUG] switch_ivr_play_say.c:3114 OPEN TTS unimrcp 2025-07-30 10:09:32.177292 98.33% [DEBUG] apt_consumer_task.c:135 () Wait for Messages [MRCP Client] 2025-07-30 10:09:32.177292 98.33% [DEBUG] switch_ivr_play_say.c:3124 Raw Codec Activated 2025-07-30 10:09:32.177292 98.33% [DEBUG] apt_task.c:263 () Signal Message to [MRCP Client] [0x7fa6e802a770;4;0] 2025-07-30 10:09:32.177292 98.33% [DEBUG] apt_task.c:335 () Process Message [MRCP Client] [0x7fa6e802a770;4;0] 2025-07-30 10:09:32.177292 98.33% [INFO] mrcp_client_session.c:390 (TTS-42) Receive App MRCP Request TTS-42 <8e98b0a10aca453c> 2025-07-30 10:09:32.177292 98.33% [INFO] mrcp_client_session.c:620 (TTS-42) Send MRCP Request TTS-42 <8e98b0a10aca453c@speechsynth> [1] 2025-07-30 10:09:32.177292 98.33% [DEBUG] apt_task.c:263 () Signal Message to [MRCPv2ConnectionAgent] [0x7fa6f0001860;1;0] 2025-07-30 10:09:32.177292 98.33% [DEBUG] apt_consumer_task.c:135 () Wait for Messages [MRCP Client] 2025-07-30 10:09:32.177292 98.33% [DEBUG] apt_poller_task.c:259 () Process Poller Wakeup [MRCPv2ConnectionAgent] 2025-07-30 10:09:32.177292 98.33% [DEBUG] apt_task.c:335 () Process Message [MRCPv2ConnectionAgent] [0x7fa6f0001860;1;0] 2025-07-30 10:09:32.177292 98.33% [INFO] mrcp_client_connection.c:551 (TTS-42) Send MRCPv2 Data 172.29.121.237:58334 <-> 172.29.121.237:1544 [348 bytes] MRCP/2.0 348 SPEAK 1 Channel-Identifier: 8e98b0a10aca453c@speechsynth Content-Type: text/plain Content-Length: 227 '您好,我是沧州福居家博会的客服,请问您是张先生吗?张先生您好!您报名了咱们的展会,我们的参展时间是七月三十日至八月二日,咱们到时候凭短信入场就可以了!' 2025-07-30 10:09:32.177292 98.33% [DEBUG] apt_poller_task.c:244 () Wait for Messages [MRCPv2ConnectionAgent] timeout [5000] 2025-07-30 10:09:32.177292 98.33% [DEBUG] apt_poller_task.c:267 () Process Signalled Descriptor [MRCPv2ConnectionAgent] 2025-07-30 10:09:32.177292 98.33% [INFO] mrcp_client_connection.c:656 () Receive MRCPv2 Data 172.29.121.237:58334 <-> 172.29.121.237:1544 [83 bytes] MRCP/2.0 83 1 200 IN-PROGRESS Channel-Identifier: 8e98b0a10aca453c@speechsynth 2025-07-30 10:09:32.177292 98.33% [DEBUG] apt_task.c:263 () Signal Message to [MRCP Client] [0x7fa6ec0018e0;2;3] 2025-07-30 10:09:32.177292 98.33% [DEBUG] apt_poller_task.c:249 () Wait for Messages [MRCPv2ConnectionAgent] 2025-07-30 10:09:32.177292 98.33% [DEBUG] apt_task.c:335 () Process Message [MRCP Client] [0x7fa6ec0018e0;2;3] 2025-07-30 10:09:32.177292 98.33% [INFO] mrcp_client_session.c:498 (TTS-42) Raise App MRCP Response TTS-42 <8e98b0a10aca453c> 2025-07-30 10:09:32.177292 98.33% [DEBUG] mod_unimrcp.c:1978 (TTS-42) REQUEST IN PROGRESS 2025-07-30 10:09:32.177292 98.33% [DEBUG] mod_unimrcp.c:1589 (TTS-42) READY ==> PROCESSING 2025-07-30 10:09:32.177292 98.33% [DEBUG] apt_consumer_task.c:135 () Wait for Messages [MRCP Client] 2025-07-30 10:09:32.177292 98.33% [DEBUG] switch_ivr_play_say.c:2832 Speaking text: '您好,我是沧州福居家博会的客服,请问您是张先生吗?张先生您好!您报名了咱们的展会,我们的参展时间是七月三十日至八月二日,咱们到时候凭短信入场就可以了!' 2025-07-30 10:09:32.197293 98.33% [DEBUG] switch_rtp.c:7698 Correct audio ip/port confirmed. 2025-07-30 10:09:32.197293 98.33% [DEBUG] switch_core_io.c:448 Setting BUG Codec PCMU:0 2025-07-30 10:09:32.217292 98.33% [DEBUG] switch_rtp.c:1934 rtcp_stats_init: audio ssrc[700391578] base_seq[27299] 2025-07-30 10:09:32.577293 98.37% [DEBUG] switch_rtp.c:7128 Correct audio RTCP ip/port confirmed. 2025-07-30 10:09:43.177293 98.23% [DEBUG] apt_poller_task.c:267 () Process Signalled Descriptor [MRCPv2ConnectionAgent] 2025-07-30 10:09:43.177293 98.23% [INFO] mrcp_client_connection.c:656 () Receive MRCPv2 Data 172.29.121.237:58334 <-> 172.29.121.237:1544 [94 bytes] MRCP/2.0 94 START-OF-INPUT 1 IN-PROGRESS Channel-Identifier: 1e7deafcb1bb43e9@speechrecog 2025-07-30 10:09:43.177293 98.23% [DEBUG] apt_task.c:263 () Signal Message to [MRCP Client] [0x7fa6ec0010e0;2;3] 2025-07-30 10:09:43.177293 98.23% [DEBUG] apt_poller_task.c:249 () Wait for Messages [MRCPv2ConnectionAgent] 2025-07-30 10:09:43.177293 98.23% [DEBUG] apt_task.c:335 () Process Message [MRCP Client] [0x7fa6ec0010e0;2;3] 2025-07-30 10:09:43.177293 98.23% [INFO] mrcp_client_session.c:514 (ASR-41) Raise App MRCP Event ASR-41 <1e7deafcb1bb43e9> 2025-07-30 10:09:43.177293 98.23% [DEBUG] mod_unimrcp.c:3734 (ASR-41) START OF INPUT 2025-07-30 10:09:43.177293 98.23% [DEBUG] mod_unimrcp.c:2623 (ASR-41) start of input 2025-07-30 10:09:43.177293 98.23% [DEBUG] apt_consumer_task.c:135 () Wait for Messages [MRCP Client] 2025-07-30 10:09:43.197293 98.23% [DEBUG] mod_unimrcp.c:2567 (ASR-41) SUCCESS, start of input 2025-07-30 10:09:43.197293 98.23% [DEBUG] mod_unimrcp.c:2567 (ASR-41) SUCCESS, start of input 2025-07-30 10:09:43.197293 98.23% [DEBUG] mod_unimrcp.c:2813 (ASR-41) start of input 2025-07-30 10:09:43.217294 98.23% [INFO] switch_ivr_async.c:4842 (sofia/internal/1001@60.1.211.205:14527) START OF SPEECH 2025-07-30 10:09:43.217294 98.23% [DEBUG] switch_ivr_play_say.c:2996 done speaking text 2025-07-30 10:09:43.217294 98.23% [DEBUG] mod_unimrcp.c:1400 (TTS-42) Stopping SYNTHESIZER 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_task.c:263 () Signal Message to [MRCP Client] [0x7fa6e8011190;4;0] 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_task.c:335 () Process Message [MRCP Client] [0x7fa6e8011190;4;0] 2025-07-30 10:09:43.217294 98.23% [INFO] mrcp_client_session.c:390 (TTS-42) Receive App MRCP Request TTS-42 <8e98b0a10aca453c> 2025-07-30 10:09:43.217294 98.23% [INFO] mrcp_client_session.c:620 (TTS-42) Send MRCP Request TTS-42 <8e98b0a10aca453c@speechsynth> [2] 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_task.c:263 () Signal Message to [MRCPv2ConnectionAgent] [0x7fa6f0001860;1;0] 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_consumer_task.c:135 () Wait for Messages [MRCP Client] 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_poller_task.c:259 () Process Poller Wakeup [MRCPv2ConnectionAgent] 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_task.c:335 () Process Message [MRCPv2ConnectionAgent] [0x7fa6f0001860;1;0] 2025-07-30 10:09:43.217294 98.23% [INFO] mrcp_client_connection.c:551 (TTS-42) Send MRCPv2 Data 172.29.121.237:58334 <-> 172.29.121.237:1544 [72 bytes] MRCP/2.0 72 STOP 2 Channel-Identifier: 8e98b0a10aca453c@speechsynth 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_poller_task.c:244 () Wait for Messages [MRCPv2ConnectionAgent] timeout [5000] 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_poller_task.c:267 () Process Signalled Descriptor [MRCPv2ConnectionAgent] 2025-07-30 10:09:43.217294 98.23% [INFO] mrcp_client_connection.c:656 () Receive MRCPv2 Data 172.29.121.237:58334 <-> 172.29.121.237:1544 [108 bytes] MRCP/2.0 108 2 200 COMPLETE Channel-Identifier: 8e98b0a10aca453c@speechsynth Active-Request-Id-List: 1 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_task.c:263 () Signal Message to [MRCP Client] [0x7fa6ec0010e0;2;3] 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_poller_task.c:249 () Wait for Messages [MRCPv2ConnectionAgent] 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_task.c:335 () Process Message [MRCP Client] [0x7fa6ec0010e0;2;3] 2025-07-30 10:09:43.217294 98.23% [INFO] mrcp_client_session.c:498 (TTS-42) Raise App MRCP Response TTS-42 <8e98b0a10aca453c> 2025-07-30 10:09:43.217294 98.23% [DEBUG] mod_unimrcp.c:1990 (TTS-42) COMPLETE 2025-07-30 10:09:43.217294 98.23% [DEBUG] mod_unimrcp.c:1589 (TTS-42) PROCESSING ==> DONE 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_consumer_task.c:135 () Wait for Messages [MRCP Client] 2025-07-30 10:09:43.217294 98.23% [DEBUG] mod_unimrcp.c:1422 (TTS-42) SYNTHESIZER stopped 2025-07-30 10:09:43.217294 98.23% [DEBUG] mod_unimrcp.c:1589 (TTS-42) DONE ==> READY 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_task.c:263 () Signal Message to [MRCP Client] [0x7fa6e8011190;4;0] 2025-07-30 10:09:43.217294 98.23% [DEBUG] mod_unimrcp.c:931 (TTS-42) Waiting for MRCP session to terminate 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_task.c:335 () Process Message [MRCP Client] [0x7fa6e8011190;4;0] 2025-07-30 10:09:43.217294 98.23% [INFO] mrcp_client_session.c:385 (TTS-42) Receive App Request TTS-42 <8e98b0a10aca453c> [1] 2025-07-30 10:09:43.217294 98.23% [DEBUG] mrcp_client_session.c:1277 (TTS-42) Dispatch App Request TTS-42 <8e98b0a10aca453c> [1] 2025-07-30 10:09:43.217294 98.23% [INFO] mrcp_client_session.c:828 (TTS-42) Terminate Session TTS-42 <8e98b0a10aca453c> 2025-07-30 10:09:43.217294 98.23% [DEBUG] mrcp_client_session.c:849 (TTS-42) Remove Control Channel TTS-42 <8e98b0a10aca453c> 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_task.c:263 () Signal Message to [MRCPv2ConnectionAgent] [0x7fa6f0001860;1;0] 2025-07-30 10:09:43.217294 98.23% [DEBUG] mrcp_client_session.c:859 (TTS-42) Subtract Media Termination TTS-42 <8e98b0a10aca453c@media-tm> 2025-07-30 10:09:43.217294 98.23% [DEBUG] mrcp_client_session.c:880 (TTS-42) Subtract Media Termination TTS-42 <8e98b0a10aca453c@rtp-tm> 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_poller_task.c:259 () Process Poller Wakeup [MRCPv2ConnectionAgent] 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_task.c:263 () Signal Message to [MediaEngine] [0x7fa6f0008b20;1;0] 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_task.c:335 () Process Message [MRCPv2ConnectionAgent] [0x7fa6f0001860;1;0] 2025-07-30 10:09:43.217294 98.23% [INFO] mrcp_client_connection.c:480 (TTS-42) Remove Control Channel <8e98b0a10aca453c@speechsynth> [1] 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_task.c:263 () Signal Message to [MRCP Client] [0x7fa6ec0010e0;2;2] 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_poller_task.c:249 () Wait for Messages [MRCPv2ConnectionAgent] 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_consumer_task.c:135 () Wait for Messages [MRCP Client] 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_task.c:335 () Process Message [MRCP Client] [0x7fa6ec0010e0;2;2] 2025-07-30 10:09:43.217294 98.23% [DEBUG] mrcp_client_session.c:329 (TTS-42) Control Channel Removed TTS-42 <8e98b0a10aca453c@speechsynth> 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_consumer_task.c:135 () Wait for Messages [MRCP Client] 2025-07-30 10:09:43.217294 98.23% [INFO] mrcp_sofiasip_client_agent.c:617 () Receive SIP Event [nua_r_bye] Status 200 OK [uni2] 2025-07-30 10:09:43.217294 98.23% [INFO] mrcp_sofiasip_client_agent.c:617 () Receive SIP Event [nua_i_state] Status 200 to BYE [uni2] 2025-07-30 10:09:43.217294 98.23% [NOTICE] mrcp_sofiasip_client_agent.c:555 (TTS-42) SIP Call State TTS-42 [terminated] 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_task.c:263 () Signal Message to [MRCP Client] [0x7fa6f8005ec0;1;1] 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_task.c:335 () Process Message [MRCP Client] [0x7fa6f8005ec0;1;1] 2025-07-30 10:09:43.217294 98.23% [INFO] mrcp_client_session.c:207 (TTS-42) Session Terminated TTS-42 <8e98b0a10aca453c> 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_consumer_task.c:135 () Wait for Messages [MRCP Client] 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_task.c:335 () Process Message [MediaEngine] [0x7fa6f0008b20;1;0] 2025-07-30 10:09:43.217294 98.23% [DEBUG] mpf_bridge.c:118 () Destroy Audio Bridge TTS-42 2025-07-30 10:09:43.217294 98.23% [INFO] mpf_rtp_stream.c:537 () Close RTP Receiver 172.29.121.237:4084 <- 172.29.121.237:5078 [r:552 l:0 j:50 p:0 d:0 i:0] 2025-07-30 10:09:43.217294 98.23% [DEBUG] mpf_context.c:236 () Remove Media Context TTS-42 2025-07-30 10:09:43.217294 98.23% [INFO] mpf_rtp_stream.c:418 () Remove RTP Session 172.29.121.237:4084 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_task.c:263 () Signal Message to [MRCP Client] [0x7fa6c00037d0;3;0] 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_task.c:335 () Process Message [MRCP Client] [0x7fa6c00037d0;3;0] 2025-07-30 10:09:43.217294 98.23% [DEBUG] mrcp_client_session.c:1009 (TTS-42) Media Termination Subtracted TTS-42 <8e98b0a10aca453c@media-tm> 2025-07-30 10:09:43.217294 98.23% [DEBUG] mrcp_client_session.c:1009 (TTS-42) Media Termination Subtracted TTS-42 <8e98b0a10aca453c@rtp-tm> 2025-07-30 10:09:43.217294 98.23% [INFO] mrcp_client.c:707 (TTS-42) Remove MRCP Handle TTS-42 <8e98b0a10aca453c> 2025-07-30 10:09:43.217294 98.23% [INFO] mrcp_client_session.c:453 (TTS-42) Raise App Response TTS-42 <8e98b0a10aca453c> [1] SUCCESS [0] 2025-07-30 10:09:43.217294 98.23% [DEBUG] mod_unimrcp.c:1840 (TTS-42) Destroying MRCP session 2025-07-30 10:09:43.217294 98.23% [NOTICE] mrcp_application.c:211 (TTS-42) Destroy MRCP Handle TTS-42 2025-07-30 10:09:43.217294 98.23% [DEBUG] mod_unimrcp.c:1589 (TTS-42) READY ==> CLOSED 2025-07-30 10:09:43.217294 98.23% [DEBUG] apt_consumer_task.c:135 () Wait for Messages [MRCP Client] 2025-07-30 10:09:43.217294 98.23% [DEBUG] mod_unimrcp.c:856 (TTS-42) audio queue destroyed 2025-07-30 10:09:43.217294 98.23% [INFO] switch_ivr_async.c:4938 (sofia/internal/1001@60.1.211.205:14527) WAITING FOR RESULT 2025-07-30 10:09:46.317293 98.23% [DEBUG] apt_poller_task.c:267 () Process Signalled Descriptor [MRCPv2ConnectionAgent] 2025-07-30 10:09:46.317293 98.23% [INFO] mrcp_client_connection.c:656 () Receive MRCPv2 Data 172.29.121.237:58334 <-> 172.29.121.237:1544 [416 bytes] MRCP/2.0 416 RECOGNITION-COMPLETE 1 COMPLETE Channel-Identifier: 1e7deafcb1bb43e9@speechrecog Completion-Cause: 000 success Content-Type: application/x-nlsml Content-Length: 231 {"resp_type":"RESULT","trace_id":"ee496c56-91d9-4e03-9f85-dad51b21b86a","segments":[{"start_time":0,"end_time":13500,"is_final":true,"result":{"text":"不是不是不是不是不是不是不是不是","score":0.7839646935462952}}]} 2025-07-30 10:09:46.317293 98.23% [DEBUG] apt_task.c:263 () Signal Message to [MRCP Client] [0x7fa6ec0010e0;2;3] 2025-07-30 10:09:46.317293 98.23% [DEBUG] apt_poller_task.c:249 () Wait for Messages [MRCPv2ConnectionAgent] 2025-07-30 10:09:46.317293 98.23% [DEBUG] apt_task.c:335 () Process Message [MRCP Client] [0x7fa6ec0010e0;2;3] 2025-07-30 10:09:46.317293 98.23% [INFO] mrcp_client_session.c:514 (ASR-41) Raise App MRCP Event ASR-41 <1e7deafcb1bb43e9> 2025-07-30 10:09:46.317293 98.23% [DEBUG] mod_unimrcp.c:3709 (ASR-41) RECOGNITION COMPLETE, Completion-Cause: 000 2025-07-30 10:09:46.317293 98.23% [DEBUG] mod_unimrcp.c:3718 (ASR-41) Recognition result is not null-terminated. Appending null terminator. 2025-07-30 10:09:46.317293 98.23% [DEBUG] mod_unimrcp.c:2756 (ASR-41) ASR adding result headers 2025-07-30 10:09:46.317293 98.23% [DEBUG] mod_unimrcp.c:2651 (ASR-41) result: {"resp_type":"RESULT","trace_id":"ee496c56-91d9-4e03-9f85-dad51b21b86a","segments":[{"start_time":0,"end_time":13500,"is_final":true,"result":{"text":"不是不是不是不是不是不是不是不是","score":0.7839646935462952}}]} 2025-07-30 10:09:46.317293 98.23% [DEBUG] mod_unimrcp.c:1589 (ASR-41) PROCESSING ==> READY 2025-07-30 10:09:46.317293 98.23% [DEBUG] apt_consumer_task.c:135 () Wait for Messages [MRCP Client] 2025-07-30 10:09:46.337293 98.23% [DEBUG] mod_unimrcp.c:2564 (ASR-41) SUCCESS, have result 2025-07-30 10:09:46.337293 98.23% [DEBUG] mod_unimrcp.c:2564 (ASR-41) SUCCESS, have result 2025-07-30 10:09:46.337293 98.23% [DEBUG] mod_unimrcp.c:2809 (ASR-41) result: {"resp_type":"RESULT","trace_id":"ee496c56-91d9-4e03-9f85-dad51b21b86a","segments":[{"start_time":0,"end_time":13500,"is_final":true,"result":{"text":"不是不是不是不是不是不是不是不是","score":0.7839646935462952}}]} 2025-07-30 10:09:46.357292 98.23% [INFO] switch_ivr_async.c:4829 (sofia/internal/1001@60.1.211.205:14527) DETECTED SPEECH --------------1.break_on_speech=false 还是会自动打断。我感觉不是顺序的问题导致的没有解析,相反我从日志中发现应该是被正确解析了? 2. while os.clock() - start < 30 do -- 最大等待30秒 local speech_status = session:getVariable("detect_speech_result_type") if speech_status == "break" then local status = { type = session:getVariable("detect_speech_result_type") or "", result = session:getVariable("detect_speech_result") or "", cause = session:getVariable("detect_speech_cause") or "" } freeswitch.consoleLog("NOTICE", "Detect Status: " .."type="..status.type ..", cause="..status.cause ..", result="..status.result:sub(1,50).."\n") handle_barge_in() return "bargein", session:getVariable("detect_speech_result") end session:sleep(100) end 获取的 detect_speech_result_type还是空
最新发布
07-31
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值