标题:哪位大神帮我把这段语音转文字的VBS代码翻成VFP的,谢谢!
只看楼主
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
给个示例
VFP与高级COM组件事件绑定
VFP的 EVENTHANDLER 命令允许绑定一个 COM 服务程序事件到一个VFP对象上被实现接口的方法
例:VFP绑定MSScriptControl库的ScriptControl对象事件Error和Timeout
操作过程:
1、打开VFP的对象浏览器
2、打开类型库,在COM库页选择 Microsoft Script Control 1.0
3、在“类和成员”列表的“接口”点击 DScriptControlSource,右边“使用该接口的类”看到ScriptControl
4、在“类和成员”列表的“类”点击 ScriptControl,右边“事件”看到Error、Timeout
5、分别点击 Error 和 Timeout,下边信息框看到:
     事件 Error() 为 空的
     事件 Timeout() 为 空的
两个事件函数无入口参数,返回值“空”值(无定义返回值)

指定数据类型可参考 DIMENSION 命令的 AS cType 说明

下面代码会触发 Error 事件
程序代码:
TEXT TO cCode TEXTMERGE NOSHOW PRETEXT 7
    function fun()
    {
        return 123+a;
    }
ENDTEXT  
sc = CREATEOBJECT("ScriptControl")
et = CREATEOBJECT("myEvents")
EVENTHANDLER(sc, et)
sc.Language = "JavaScript"
sc.AddCode(cCode)
? sc.Run("fun")
RETURN

DEFINE CLASS myEvents AS session OLEPUBLIC 
    IMPLEMENTS DScriptControlSource IN "ScriptControl"
    PROCEDURE DScriptControlSource_Error() as VOID
        ? "触发Error事件"
    ENDPROC
    PROCEDURE DScriptControlSource_Timeout() as VOID
        ? "触发Timeout事件"
    ENDPROC    
ENDDEFINE



2021-12-30 10:30
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
SAPI的sapi.dll存放在 C:\Windows\System32\Speech\Common\sapi.dll
可在VFP的对象浏览器的COM库页“浏览..”
2021-12-30 10:42
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:30 
SAPI.SpSharedRecoContext 没设备测试不了
测试了一下 SAPI.SpVoice 是可行的
程序代码:
sv = CREATEOBJECT("SAPI.SpVoice")
svEvent = CREATEOBJECT("mySvEvents")
EVENTHANDLER(sv, svEvent)
sv.speak("Hello World", 1)  && 异步
MESSAGEBOX("结束......")
RETURN

DEFINE CLASS mySvEvents AS session OLEPUBLIC
    IMPLEMENTS _ISpeechVoiceEvents IN "SAPI.SpVoice"
    PROCEDURE _ISpeechVoiceEvents_AudioLevel(StreamNumber, StreamPosition, AudioLevel)
        ? "AudioLevel"
    ENDPROC
    PROCEDURE _ISpeechVoiceEvents_Bookmark(StreamNumber, StreamPosition, Bookmark, BookmarkId)
        ? "Bookmark"
    ENDPROC
    PROCEDURE _ISpeechVoiceEvents_EndStream(StreamNumber, StreamPosition)
        ? "EndStream"
    ENDPROC
    PROCEDURE _ISpeechVoiceEvents_EnginePrivate(StreamNumber, StreamPosition, EngineData)
        ? "EnginePrivate"
    ENDPROC
    PROCEDURE _ISpeechVoiceEvents_Phoneme(StreamNumber, StreamPosition, Duration, NextPhoneId, Feature, CurrentPhoneId)
        ? "Phoneme"
    ENDPROC
    PROCEDURE _ISpeechVoiceEvents_Sentence(StreamNumber, StreamPosition, CharacterPosition, Length)
        ? "Sentence"
    ENDPROC
    PROCEDURE _ISpeechVoiceEvents_StartStream(StreamNumber, StreamPosition)
        ? "StartStream"
    ENDPROC
    PROCEDURE _ISpeechVoiceEvents_Viseme(StreamNumber, StreamPosition, Duration, NextVisemeId, Feature, CurrentVisemeId)
        ? "Viseme"
    ENDPROC
    PROCEDURE _ISpeechVoiceEvents_VoiceChange(StreamNumber, StreamPosition, VoiceObjectToken)
        ? "VoiceChange"
    ENDPROC
    PROCEDURE _ISpeechVoiceEvents_Word(StreamNumber, StreamPosition, CharacterPosition, Length)
        ? "Word"
    ENDPROC
ENDDEFINE

2021-12-31 19:02
jlliushi
Rank: 2
等 级:论坛游民
帖 子:33
专家分:10
注 册:2021-12-24
得分:0 
回复 10楼 吹水佬
问题已自己解决,谢谢!
2022-01-01 07:12
cjc1010
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:64
专家分:195
注 册:2006-4-16
得分:0 
请给我们说说怎么解决的?
2022-01-01 16:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-508018-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016709 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved