找回密码
 加入
搜索
楼主: yingf20

[网络通信] [网管呼叫] 如何添加播放语音上去,知道的朋友帮忙一下。[已解决]

 火... [复制链接]
 楼主| 发表于 2012-6-1 11:50:56 | 显示全部楼层
晕。没人帮忙解决一下吗??大家知道怎样的,不要藏私好么?发表一下。
发表于 2012-6-2 09:07:39 | 显示全部楼层
本帖最后由 lanfengc 于 2012-6-2 09:09 编辑

回复 16# yingf20


我做了个这样的UDF 你试试。 语音引擎下载地址:http://115.com/file/antmr5p7

Func SpeakText($_Num = '')
        Local $loopTimes = 0
        If $_Num = '' Then Return
        $obj = ObjCreate("SAPI.SpVoice")
        If @error Then Exit MsgBox(16, "错误", "语音库创建失败!")
        For $T In $obj.GetVoices ;遍历所有的引擎
                $strVoice = $T.GetDescription ;获取语音引擎的名字
                If StringCompare($strVoice, "ScanSoft Mei-Ling_Full_22kHz") = 0 Then ;如果是女声引擎的名字
                        $obj.voice = $obj.GetVoices().Item($loopTimes) ;则使用这个引擎的ID
                        ExitLoop ;不在查找了
                EndIf
                $loopTimes += 1 ;如果不是女声引擎的名字,则ID号加1
        Next

        If StringCompare($obj.GetVoices().Item($loopTimes).GetDescription, "ScanSoft Mei-Ling_Full_22kHz") <> 0 Then  ;如果当前使用的语音引擎名称不是女声的,则提示错误
                MsgBox(16, "错误", "你没有安装女声语音库!")
                SetError(1)
        Else
                $obj.rate = -4   ;速度 -10 到 10  越小越慢
                $obj.volume = 100   ;音量 百分比, 100代表100%,最大
                $obj.Speak($_Num)   ;朗读传送过来的字符
                $obj.WaitUntilDone(-1)  ;等待直到朗读结束 为假
                $obj.rate = -1  ;速度为-1
                $obj.Speak("号机器非法使用")  ;朗读 中文
                $obj.WaitUntilDone(-1) ;等待直到朗读结束 为假
                Sleep(200)  ;等待200毫秒, 一句话说完了,等一会,要不然一句接一句的
                $obj.Speak("请网管去查看")  ;朗读中文 
                $obj.WaitUntilDone(-1)  ;等待直到朗读结束 为假
                $obj = 0  ;销毁OBJECT对象
        EndIf

EndFunc   ;==>SpeakText

SpeakText("005")
发表于 2012-6-2 09:58:52 | 显示全部楼层
这个UDF好强大,支持一下。
 楼主| 发表于 2012-6-2 12:40:14 | 显示全部楼层
本帖最后由 yingf20 于 2012-6-2 12:46 编辑

回复 17# lanfengc


    谢谢你的帮助。你这个用到别的代码上是好强的。
我想要知道的是,如上我的代码怎判断收到001或002时怎播放相关的内容?
发表于 2012-6-2 13:00:51 | 显示全部楼层
本帖最后由 xms77 于 2012-6-2 13:02 编辑

回复 1# yingf20
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("语音", 460, 444)
$ListView1 = GUICtrlCreateListView("计算机|号数信息|播放时间|IP地址", 0, 0, 458, 414)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 100);调整宽度
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 100);调整宽度
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 100);调整宽度
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 3, 100);调整宽度
GUICtrlSendMsg($ListView1, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES);设置表格边框
GUICtrlSetCursor(-1, 0);鼠标指针
GUISetState(@SW_SHOW)
TCPStartup(); 开始 TCP 服务
$ip = IniRead(@ScriptDir & '\wglm.ini', 'Config', 'ServerIP', '192.168.0.7');从配置文件中读取IP
$port = IniRead(@ScriptDir & '\wglm.ini', 'Config', 'ServerPort', '21991');从配置文件中读取端口
$tcpMainListen = TCPListen($ip, $port, 100);创建监听,用于接收数据
If $tcpMainListen = -1 Then
MsgBox(4096, '错误', '创建监听失败!')
Exit
EndIf
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit
EndSwitch
$tcpSocket = TCPAccept($tcpMainListen);接收客户端连接
If $tcpSocket <> -1 Then;客户端连接成功
  While 1
   $TcpRecvData = TCPRecv($tcpSocket, 2048, 1);接收客户端发送的数据
   If @error Then ExitLoop ;如果接收信息出现错误,则退出循环.
   If $TcpRecvData <> '' Then
        ;===你需要的代码如下=========================================================================
         $splited = StringSplit(BinaryToString($TcpRecvData),"|")  ;接受到的信息以“|”符号来分割到数组
         ;下面是语音播报
         $sTalk = "狗日的"& $splited[2] & "呼叫操蛋的服务器,听到请回答."
         $oVoice = ObjCreate("SAPI.SpVoice")
         $oVoice.Volume = 100
         $oVoice.Speak($sTalk)
        ;====代码结束================================================================================
    $TcpRecvData = GUICtrlCreateListViewItem(BinaryToString($TcpRecvData, 4), $ListView1);将信息写入到$listview1控件
    ExitLoop
   EndIf
  WEnd
EndIf
WEnd
发表于 2012-6-2 14:44:09 | 显示全部楼层
之前有寫過類似的,只要自己對不同接收的信息做一下判斷就可以啦..
 楼主| 发表于 2012-6-3 13:04:24 | 显示全部楼层
回复 20# xms77


    感谢你的代码,总算完成了这项问题。谢谢。。。。。。。。。。。
 楼主| 发表于 2012-6-3 13:11:55 | 显示全部楼层
本帖最后由 yingf20 于 2012-6-3 13:15 编辑

感谢各位热心帮助的朋友!在此把完成的代码发表一下,需要的朋友可以学习一下。
游客,如果您要查看本帖隐藏内容请回复
发表于 2012-6-4 09:00:40 | 显示全部楼层
多谢楼主分享方法
发表于 2012-6-4 11:06:16 | 显示全部楼层
回复 23# yingf20


    rhrh看看
发表于 2012-6-4 20:20:18 | 显示全部楼层
回复 14# lpxx


    WGLM的L老师,晚上好!
发表于 2012-6-4 21:03:33 | 显示全部楼层
回复 26# hzxymkb
WGLM = 网管联盟???
发表于 2012-6-4 21:59:26 | 显示全部楼层
学习一下。看看
发表于 2012-6-4 22:52:03 | 显示全部楼层
回复 27# xms77


    是的!
发表于 2012-6-4 23:34:49 | 显示全部楼层
谢谢了哈,有您的支持,我们将做得更专业了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-18 16:25 , Processed in 0.081175 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表