为什么 Application.Speech.Speak 单独读取一些数字而不是将它们放在一起?
Why does Application.Speech.Speak read some numbers individually rather than put them together?
假设现在是 11 点 11 分。它显示 "ONE ONE" 小时 "eleven" 分钟,如:
Sub TEST1()
Application.Speech.Speak "It is " & Hour(Now()) & " hours and " & Minute(Now()) & " minutes"
End Sub
但是,下面是 "eleven" 小时 "eleven" 分钟
Sub TEST2()
Application.Speech.Speak "It is 11 hours and 11 minutes"
End Sub
相反,它显示 "ONE ONE" 小时 "eleven" 分钟,如:
Sub TEST3()
Application.Speech.Speak "It is " & "11" & " hours and " & "11" & " minutes"
End Sub
我怎样才能让它把这些数字读成文字?
您需要 create/modify 字符串才能产生您想要的结果。
Sub dural()
Application.Speech.Speak "11"
Application.Speech.Speak "eleven"
End Sub
会重复同样的事情。
Sub dural()
Application.Speech.Speak "1 1"
Application.Speech.Speak "one one"
End Sub
也会这样做。一旦你决定了你想让计算机说什么,你可以 format/re-format 字符串来产生那个结果。
编辑#1:
在我的电脑上:
Sub dmral()
Dim s As String
s = "It is " & "11" & " hours and " & "11" & " minutes"
MsgBox s
Application.Speech.Speak s
End Sub
也按预期工作。
看来需要先进行串联
通过说话接近XML 争论
语法
.Speak
(Text, SpeakAsync, SpeakXML, Purge)
如果将第三个参数 SpeakXML
设置为 True,则可以在文本字符串中使用 XML 标签。
XML <spell>
标签强制语音拼出所有文本,而不是使用其默认的单词和句子中断规则。所有字符都应扩展为相应的单词(包括标点符号、数字等)。
注意 <spell>
标签不能为空,不要忘记结束标签 </spell>
.
尝试将以下内容与 11
的两种变体一起使用:
代码
Sub TEST()
Application.Speech.Speak "It is " & "<spell>11</spell>" & " hours and " & "11" & " minutes", False, SpeakXML:=True
End Sub
Note/caveat
我使用的是中欧语言版本,而你的例子在我的例子中没有说出一个,所以可能还有另一个本地设置问题。
葡萄牙语有一些有趣的发音挑战。我们有,除其他外,鼻音“-ão”词尾,如在圣保罗。 -ão 的发音几乎与 "sow" 中的 -ow 相似,这意味着当您发出元音时,空气应该部分从鼻子排出。话虽这么说...
Application.Speech.Speak "Já são" & Hour(Now()) & "horas e 11 minutos"
--> 读取 "It is ONE ONE hours and ELEVEN minutes"
Application.Speech.Speak "11"
--> 读取 "ELEVEN"
Application.Speech.Speak "Já são" & "11" & "horas"
--> 读取 "It is ONE ONE hours"
Application.Speech.Speak "Já sao" & Hour(Now())
--> 读取 "It is ELEVEN hours"。请注意,在这种情况下,鼻音 -“ão”已被删除。所以,数字发音是单词
Application.Speech.Speak "Já são^" & Hour(Now())
--> 读取 "It is ELEVEN hours"。请注意,现在出现了鼻音 -“ão”,并且紧接着还有一个“^”符号
我不知道为什么 Excel 会这样。 但是,问题解决了 :)
假设现在是 11 点 11 分。它显示 "ONE ONE" 小时 "eleven" 分钟,如:
Sub TEST1()
Application.Speech.Speak "It is " & Hour(Now()) & " hours and " & Minute(Now()) & " minutes"
End Sub
但是,下面是 "eleven" 小时 "eleven" 分钟
Sub TEST2()
Application.Speech.Speak "It is 11 hours and 11 minutes"
End Sub
相反,它显示 "ONE ONE" 小时 "eleven" 分钟,如:
Sub TEST3()
Application.Speech.Speak "It is " & "11" & " hours and " & "11" & " minutes"
End Sub
我怎样才能让它把这些数字读成文字?
您需要 create/modify 字符串才能产生您想要的结果。
Sub dural()
Application.Speech.Speak "11"
Application.Speech.Speak "eleven"
End Sub
会重复同样的事情。
Sub dural()
Application.Speech.Speak "1 1"
Application.Speech.Speak "one one"
End Sub
也会这样做。一旦你决定了你想让计算机说什么,你可以 format/re-format 字符串来产生那个结果。
编辑#1:
在我的电脑上:
Sub dmral()
Dim s As String
s = "It is " & "11" & " hours and " & "11" & " minutes"
MsgBox s
Application.Speech.Speak s
End Sub
也按预期工作。
看来需要先进行串联
通过说话接近XML 争论
语法
.Speak
(Text, SpeakAsync, SpeakXML, Purge)
如果将第三个参数 SpeakXML
设置为 True,则可以在文本字符串中使用 XML 标签。
XML <spell>
标签强制语音拼出所有文本,而不是使用其默认的单词和句子中断规则。所有字符都应扩展为相应的单词(包括标点符号、数字等)。
注意 <spell>
标签不能为空,不要忘记结束标签 </spell>
.
尝试将以下内容与 11
的两种变体一起使用:
代码
Sub TEST()
Application.Speech.Speak "It is " & "<spell>11</spell>" & " hours and " & "11" & " minutes", False, SpeakXML:=True
End Sub
Note/caveat
我使用的是中欧语言版本,而你的例子在我的例子中没有说出一个,所以可能还有另一个本地设置问题。
葡萄牙语有一些有趣的发音挑战。我们有,除其他外,鼻音“-ão”词尾,如在圣保罗。 -ão 的发音几乎与 "sow" 中的 -ow 相似,这意味着当您发出元音时,空气应该部分从鼻子排出。话虽这么说...
Application.Speech.Speak "Já são" & Hour(Now()) & "horas e 11 minutos"
--> 读取 "It is ONE ONE hours and ELEVEN minutes"
Application.Speech.Speak "11"
--> 读取 "ELEVEN"
Application.Speech.Speak "Já são" & "11" & "horas"
--> 读取 "It is ONE ONE hours"
Application.Speech.Speak "Já sao" & Hour(Now())
--> 读取 "It is ELEVEN hours"。请注意,在这种情况下,鼻音 -“ão”已被删除。所以,数字发音是单词
Application.Speech.Speak "Já são^" & Hour(Now())
--> 读取 "It is ELEVEN hours"。请注意,现在出现了鼻音 -“ão”,并且紧接着还有一个“^”符号
我不知道为什么 Excel 会这样。 但是,问题解决了 :)