2018-04-28语音函数练习

分类:lisp函数 | 标签: lisp   语音  
2018-04-28 17:15 阅读(?)评论(0)

语音函数练习.lsp


;;;=================================================================*
;;;      zml-speak ( str mode )                                     *
;;;功能:将字符转换为语音输出                                       *
;;;参数:str----欲语音输出的内容,类型:字符串                      *
;;;      mode---语音模式(0--英文;1--中文)                        *
;;;返回:若成功为字符串,否则为nil                                  *
;;;示例:(zml-speak "欢迎您!" 1)                                    *
;;;日期:zml84 于2007-05-10                                         *
;;;      zml84 修改于 2018-04-28                                    *
;;;=================================================================*
(defun ZML-SPEAK (str mode / sapi)
    (if	(= (type str) 'STR)
	(if (setq SAPI (vlax-create-object "Sapi.SpVoice"))
	    (progn
		(cond
		    ;;使用英文引擎
		    ((= mode 0)
		     (setq str 
			      (strcat "<lang langid='409'>" str "</lang>")
		     )
		    )
		    ;;使用中文引擎
		    ((= mode 1)
		     (setq str
			      (strcat "<lang langid='804'>" str "</lang>")
		     )
		    )
		) ;_结束 cond
		
		
		(VL-CATCH-ALL-APPLY 'vlax-invoke (list SAPI "Speak" str 0))
		
		(vlax-release-object SAPI)
		str
	    )
	)
    )
)
;;;=====================================================================
;;;练习
(vl-load-com)
(defun C:SPEAK (/ TMP)
    (if	(ZML-SPEAK "输入词句!" 1)
	(while (/=
		   (setq TMP (getstring t "\n输入字词或句子:"))
		   ""
	       )
	    (ZML-SPEAK TMP 1)
	)
	(princ "\n不能继续,原因是:系统中未安装语音工具包。")
    )
    (princ)
)
;;;=====================================================================
;;;练习2
(defun C:SPEAK1	(/ TMP)
    (if	(ZML-SPEAK "Importation of English words" 0)
	(while (/=
		   (setq TMP (getstring t "\n输入英文字词或句子:"))
		   ""
	       )
	    (ZML-SPEAK TMP 0)
	)
	(princ "\n不能继续,原因是:系统中未安装语音工具包。")
    )
    (princ)
)
;;;=====================================================================
;;;加载后的提示信息
;;(princ "\n语音提示练习 加载完成!!")
(zml-speak "加载完成!!" 1)
;;(princ "\n★输入命令\"speak\"开始运行\n")
(princ)


;|;;==================================

;利用下面的方法可查看系统支持何种语言:


返回:'("MSSimplifiedChineseVoice" "MS-Lili-2052-20-DSK" "MS-Anna-1033-20-DSK")

解释:
MSSimplifiedChineseVoice  (中文男声,xp和win7中同时存在)

MS-Lili-2052-20-DSK  (中英文女声,win7中存在)

MS-Anna-1033-20-DSK   (英文女声)

|;

;|;;==================================

       // 选择语音库Microsoft Sam
       pSpVoice->speak(L"<VOICE REQUIRED='NAME=Microsoft Sam'/>鸡啄米", SPF_DEFAULT | SPF_IS_XML, NULL);

       // 设置音量
       <VOLUME LEVEL='90'>鸡啄米</VOLUME>

       // 设置语言
       <lang langid='804'>鸡啄米</lang>
       804代表中文,409代表英文。如果用函数SpGetLanguageFromToken获取语言时,0x804表示中文,0x409表示英文。

|;
  最后修改于 2020-02-03 14:38    阅读(?)评论(0)
 
表  情:
加载中...
 

请各位遵纪守法并注意语言文明