TC官方合作论坛

 找回密码
 立即注册
查看: 1101|回复: 3

[问题] 如何调用WIN7自带的文字转语音功能

[复制链接]
发表于 2015-12-5 16:11:46 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
如何调用WIN7自带的文字转语音功能

功能 文字转语音(strText)
    变量 sp=com("SAPI.SpVoice")//这个是系统自带的API
    sp.Speak(strText,false)//语音识别
    消息框("结束")
结束



这个我用以前的4.几版本还有用,而且效果不错。

现在5.1的就不行了,应该怎么写才可以用

最主要的是sp.Speak(strText,false)//语音识别
这里不对去掉小数点就编译不了了。


请高手指教下谢谢!!!
希望高手能帮我解决这个问题,,。。在线等待中。。。。。。。。。。。。。。。。。。。。。。


谢谢!!!!!谢谢!!!!!!!谢谢!!!!!!

回复

使用道具 举报

发表于 2015-12-5 23:02:52 | 显示全部楼层
SpVoice
该SpVoice对象带来了文字到应用程序使用的SAPI自动化语音转换(TTS)引擎功能。
应用程序可以创建无数SpVoice对象,每个独立和与人交往的能力。 一个SpVoice对象,通常简称为一个声音,是创建具有默认属性设置,以便它已准备好立即发言。

该SpVoice自动化对象有下列内容:
下面是是SAPI.SpVoice 对象的一些说明 (自己整理的有些地方可能跟官方的有差异)



属性列表说明
属性         描述
AlertBoundary         获取并设置警戒范围,它指定如何说话的声音暂停警报本身。
AllowAudioOutputFormatChangesOnNextSet         获取并设置标志,指定是否允许调整声音输出格式的音频自动。
AudioOutput         获取并设置当前的音频输出对象的声音使用。
AudioOutputStream         获取并设置当前音频流对象使用的声音。
EventInterests         获取并设置了语音接收到的事件的类型。
Priority         获取并设置优先级的声音。
Rate         获取和设置声音说话速度。
Status         返回当前的发言和事件的声音地位1 ISpeechVoiceStatus对象。
SynchronousSpeakTimeout         获取并设置时间间隔,以毫秒为单位,在这之后的声音的同步发言和SpeakStream调用将超时当它的输出设备不可用。
Voice          获取和设置当前活动的声音集合的成员。
Volume         获取并设置相应的体积(响度)的语音水平。

方法列表说明
方法         参数         返回值         描述
DisplayUI(
     hWndParent As Long,
     Title As String,
     TypeOfUI As String,
     [ExtraData As Variant = Nothing]
)

       
参数
hWndParent
指定的窗口句柄所属的窗口。
标题
指定使用的用户界面窗口的标题。
TypeOfUI
A String specifying the name of the UI to display. For a list of available SAPI 5 UI, see Engine User Interfaces.
ExtraData
[可选]指定ExtraData。 此信息是独一无二的应用程序,可以用来提供额外的或更具体的信息到用户界面。 默认情况下,没有任何价值,并指出使用的用户界面不使用任何额外的信息用这种方法提供的。

        无         启动指定的用户界面显示。
SpVoice.GetAudioOutputs(
     [RequiredAttributes As String = ""],
     [OptionalAttributes As String = ""]
) As ISpeechObjectTokens

       
参数
RequiredAttributes
[可选]指定RequiredAttributes。 要返回GetAudioOutputs,音频输出令牌必须包含所有属性的具体要求。 如果没有标记匹配的选择,选择返回的将不包含任何元素。 默认情况下,没有属性是必需的,因此该方法返回所有的标记发现。
OptionalAttributes
[择]指定OptionalAttributes。 返回令牌包含RequiredAttributes是由OptionalAttributes排序。 如果OptionalAttributes指定,令牌所列OptionalAttributes第一。 默认情况下,没有属性指定的讲话,从配置数据库返回的列表属性的顺序被发现的。

       
一个ISpeechObjectTokens集合包含选定的产出。

        可用的音频输出令牌返回一个选择。
SpVoice.GetVoices(
     [RequiredAttributes As String = ""],
     [OptionalAttributes As String = ""]
) As ISpeechObjectTokens

       
参数
RequiredAttributes
[可选]指定RequiredAttributes。 挑选符合这些规格的声音。 如果没有匹配的声音选择,选择将返回包含任何声音。 默认情况下,没有属性是必需的,所以列表返回所有的标记发现。
OptionalAttributes
[择]指定OptionalAttributes。 这些规范相匹配的声音将返回在选择面前。 默认情况下,没有属性指定的讲话,从配置数据库返回的列表属性的顺序被发现的。

        返回值:一个ISpeechObjectTokens变量包含了语音收集令牌选中。         返回一个声音可供选择的声音。
SpVoice.IsUISupported(
     TypeOfUI As String,
     [ExtraData As Variant = Nothing]
) As Boolean

       
参数
TypeOfUI
A String specifying the name of the UI to display. For a list of available SAPI 5 UI, see Engine User Interfaces.
ExtraData
[可选]指定ExtraData。 此信息是独一无二的应用程序,可以用来提供额外的或更具体的信息到用户界面。 默认情况下,没有任何价值,并表明使用的用户界面不使用任何额外的信息用这种方法提供的。

        返回值:一个布尔变量指示是否支持指定的用户界面。 它返回True,如果支持,如果不支持或False         如果指定的用户界面是支持的确定。
SpVoice.Resume()

        无         无         原因恢复说话的声音时暂停。
SpVoice.Pause()

        无         无         暂停的声音在最近的警报和关闭边界的输出设备,允许它被用于其他的声音。
SpVoice.Skip(
     Type As String,
     NumItems As Long
) As Long

       
参数
类型:
该项目类型被跳过。 目前,一句是唯一一种支持。
NumItems:
该项目的数目,跳过了在语音输入流。 负的值指定跳绳落后。

        返回值:一个长整型变量包含的项目数跳过。         导致声音向前或向后跳过由内当前输入文本流项规定的数量。
SpVoice.Speak(
     Text As String,
     [Flags AsSpeechVoiceSpeakFlags = SVSFDefault]
) As Long
       
Text  要说的内容
        返回值:一个长整型变量包含事件处理。         启动一个文本字符串,文本文件或波形文件的声音说话
SpVoice.SpeakCompleteEvent()As Long

       

        返回值:一个长整型变量包含事件处理。         获取事件处理将要完成的声音信号时,说话的声音。
SpVoice.SpeakStream(
     Stream AsISpeechBaseStream,
     [Flags AsSpeechVoiceSpeakFlags = SVSFDefault]
) As Long

       
参数:Stream指定一个ISpeechBaseStream对象,包含流。Flags [可选]指定的标记。 默认值是SVSFDefault。

       
返回值:一个长整型变量包含流的数目。 当一个声音enqueues通过讲多个异步流,流的数目要与相应的流关联的事件。

        启动一个文本流或声音文件上的声音。
SpVoice.WaitUntilDone(
     msTimeout As Long
) As Boolean

       
参数
msTimeout
指定以毫秒为单位的超时。 如果-1,时间间隔被忽略,方法简单的语音等待把话说完。

       
返回值
一个布尔变量,说明这种情况下,终止了通话。 如果为True,声音发言完毕;若假,时间间隔时间。
        阻止对方的声音,直到发言完毕或在指定的时间间隔已过。

此时了解了这个东西的基本信息之后于是就开始动工了。
由于这个是一个com对象,操作起来会有很多问题,之前,也就是最近吧,项目中出现了一个需要生成word的功能,那dcom对象把我搞得蛋疼,写代码没有提示,那时之痛苦实属罕见。
下面介绍个新东西
具体这里不做深入描述和讲解,主要针对这个朗读其相关进行介绍
C# 4.0中的动态类型和动态编程:
dynamic 的使用范围
由于 dynamic 它本身就是一个类型,因此可以应用在任何需要类型的地方。
这些地方包括:
1、变量声明;
2、函数、委托、Lambda 表达式的参数类型,或者具备泛型的类型参数;
3、TypeOf 运算;
4、类型转换以及 is, as 运算。
下面的代码动态的获取一个 COM 对象类型,并通过该类型创建这个 COM 对象的实例,并准备调用该实例上的一个方法实现我们需要的功能。
这个例子引用了 Speech API 中的 SAPI.SpVoice 对象,并调用了其 Speak() 方法。编译并运行此示例,我们通过计算机的音箱得到了正确的语音
1: using System;
3: Type type = Type.GetTypeFromProgID("SAPI.SpVoice");
4: dynamic spVoice = Activator.CreateInstance(type);
5: spVoice.Speak("我要说话");
优点:可以将返回不同模型类型的Action来使用同一个模板,只要你调用了它们都存在的属性或方法即可。
缺点:如果你调用了一个该类型中不存在属性或方法时,就会抛出一个RuntimeBinderException,所以在使用动态类型时我们要做好约束。
回复 支持 反对

使用道具 举报

发表于 2016-1-26 00:45:59 | 显示全部楼层
非常好用
回复

使用道具 举报

发表于 2016-2-19 22:00:05 | 显示全部楼层
怎么用啊?看不懂哦,大神能贴下代码吗?我的总是出现sp不是插件变量,难道我系统里没有这个AIP?
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-5-10 00:58 , Processed in 0.047790 second(s), 23 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

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