Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 10478|回复: 11

[分享] [原创代码]调用GOOGLE语音朗读进行程序交互

[复制链接]
发表于 2011-9-23 19:21 | 显示全部楼层 |阅读模式
GOOGLE的在线翻译中有个很强大的功能,就是能将翻译后的内容生成音频文件进行朗读,
某天突发奇想,我能不能在线调用他来为我们朗读自已想要的内容呢?
调试了一下,是可以成功的.朗读的语音有点象外国人说中文,呵呵...
觉得挺有趣的,发上来共享一下,写成了函数,如下:

代码:
'************************************************
'*函数功能:调用GOOGLE进行中文语言朗读
'*函数无返回要朗读的中文以字符串传入参数sWord
'*by:hyy514_2011.09
'************************************************
Private Declare Function mciExecute Lib "winmm.dll" ( ByVal lpstrcommand As String ) As Long
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" ( ByVal pCaller As Long ,  ByVal szURL As String ,  ByVal szFileName As String ,  ByVal dwReserved As Long ,  ByVal lpfnCB As Long ) As Long
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" ( ByVal nBufferLength As Long ,  ByVal lpBuffer As String ) As Long
Private mciID As Integer

Function GoogleSay( ByVal sWord As String )
    Dim objJs    As Object
    Dim sFile    As String
    Dim sTmpPath As String
   
    sTmpPath = Space(255)
    GetTempPath 255, sTmpPath
    sTmpPath = Left(sTmpPath, InStr(sTmpPath, Chr(0)) - 1)
    sFile = sTmpPath & mciID Mod 2 & ".mp3"
    mciID = mciID + 1
    Set objJs = CreateObject("MSScriptControl.ScriptControl")
    objJs.Language = "JavaScript"
    sWord = objJs.Eval("encodeURI('" & Replace(sWord, "'", "\'") & "');")
    URLDownloadToFile 0, "http://translate.google.cn/translate_tts?ie=UTF-8&q=" & sWord & "&tl=zh-CN&prev=input", sFile, 0, 0
    mciExecute "play " & sFile
End Function
可以这样调用:
代码:
Sub t()
GoogleSay "本程序来自EXCEL精英培训网:飞翔_HYY5_1_4"
End Sub
示例文件:
googleSay.rar (8.31 KB, 下载次数: 134)
 楼主| 发表于 2011-9-23 19:23 | 显示全部楼层
回复

使用道具 举报

发表于 2011-9-23 19:29 | 显示全部楼层
回复

使用道具 举报

发表于 2011-9-23 19:38 | 显示全部楼层
比EXCEL 自带的语音(朗读) 功能 生动多了!
回复

使用道具 举报

发表于 2011-9-23 19:46 | 显示全部楼层
无网络里(关闭网络联接)......好像就只会读最后调用的两句...
回复

使用道具 举报

 楼主| 发表于 2011-9-23 19:49 | 显示全部楼层
mxg825 发表于 2011-9-23 19:46
无网络里(关闭网络联接)......好像就只会读最后调用的两句...

程序是在线获得语言的,无联网当然不行了
回复

使用道具 举报

发表于 2011-9-23 20:14 | 显示全部楼层
加判定 是否有网络联接。。。
如 无,返回 提示"当前网络不通或缓慢 无法进入语音功能
"
回复

使用道具 举报

发表于 2011-9-23 22:15 | 显示全部楼层
{:35:}{:25:}
回复

使用道具 举报

发表于 2011-11-29 23:12 | 显示全部楼层
sTmpPath = Space(255)
    GetTempPath 255, sTmpPath
    sTmpPath = Left(sTmpPath, InStr(sTmpPath, Chr(0)) - 1)
      Set objJs = CreateObject("MSScriptControl.ScriptControl")
    objJs.Language = "JavaScript"
    sWord = objJs.Eval("encodeURI('" & Replace(sWord, "'", "\'") & "');")

飞翔兄:以上几句不太明白 请求注解一下!谢谢
回复

使用道具 举报

发表于 2012-2-16 16:13 | 显示全部楼层
谢谢分享。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-30 18:09 , Processed in 1.350636 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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