帖子

[demo分享] 初步研究使用易语言合成识别例程

[复制链接]

该用户从未签到

481212 农奴也语音 发表于 2013-4-12 20:50:08 1#
易语言讯飞合成与识别.rar (8.02 KB, 下载次数: 296)

评分

参与人数 1语点 +10 收起 理由
edzhu + 10 很给力!

查看全部评分

 楼主| 农奴也语音 发表于 2013-4-12 21:13:54
2#
没人看,算了我再贴个源码吧
这样就可以不下文件了

.版本 2
.支持库 spec

.子程序 识别语音, 文本型
.参数 语音, 字节集
.局部变量 配置参数, 文本型
.局部变量 返回值, 整数型
.局部变量 会话参数, 文本型, , , 会话参数
.局部变量 会话ID, 文本型
.局部变量 audio_data1, 字节集
.局部变量 audio_data指针, 整数型
.局部变量 audio_len, 整数型
.局部变量 audio_status, 整数型, , , 音频流数
.局部变量 ep_status, 整数型, , , 读写点监测
.局部变量 recog_status, 整数型, , , 识别状态
.局部变量 rslt_status, 整数型, , , 结果状态
.局部变量 rec_result, 文本型, , , 识别结果(文本)
.局部变量 para_name, 文本型, , , 获取参数名
.局部变量 para_value, 文本型, , , 获取参数值
.局部变量 value_len, 整数型, , , 参数长度

' 配置参数里的appid必须到讯飞网站申请appid号,下面appid=********是我乱写的
配置参数 = “server_url=dev.voicecloud.cn:80/index.htm,appid=********,coding_ libs=speex.dll,max_audio_size=1048576,vad_enable=true”
返回值 = 识_初始化 (配置参数)
.如果真 (返回值 ≠ 0)
    输出调试文本 (“语音识别初始化成功”)

.如果真结束
会话参数 = “ssm=1,sub=iat,aue=speex;7,auf=audio/L16;rate=16000,ent=sms16k,rst=plain”

会话ID = 识_开始会话 (“”, 会话参数, 返回值)

audio_data1 = 取空白字节集 (5120)
' 音频数据 = 读入文件 (编辑框2.内容)
audio_data1 = 取字节集左边 (音频数据, 5120)  ' 每次取5k的文件上传,能减缓网络压力。
audio_data指针 = _lstrcpyn_字节集 (audio_data1, audio_data1, 0)
audio_len = 5120
audio_status = #ISR_AUDIO_SAMPLE_FIRST

返回值 = 识_上传音频 (会话ID, _lstrcpyn_字节集 (音频数据, 音频数据, 0), 取字节集长度 (音频数据), audio_status, ep_status, recog_status)
音频数据 = 取字节集右边 (音频数据, 取字节集长度 (音频数据) - 5120)
.判断循环首 (audio_status ≠ #ISR_AUDIO_SAMPLE_LAST)
    ' … // 读取音频到缓冲区audio_data中,设置音频长度audio_len,音频状态audio_status。
    audio_data1 = 取字节集左边 (音频数据, 5120)
    audio_data指针 = _lstrcpyn_字节集 (audio_data1, audio_data1, 0)
    audio_len = 取字节集长度 (audio_data1)
    .如果 (audio_len = 5120)
        audio_status = #ISR_AUDIO_SAMPLE_CONTINUE
        音频数据 = 取字节集右边 (音频数据, 取字节集长度 (音频数据) - 5120)
    .否则
        audio_status = #ISR_AUDIO_SAMPLE_LAST
    .如果结束
    返回值 = 识_上传音频 (会话ID, audio_data指针, audio_len, audio_status, ep_status, recog_status)
    .判断开始 (返回值 ≠ #MSP_SUCCESS)
        ' 语音识别发生错误 (3, 返回值)
        调试输出 (“音频上传失败, 错误参数是: %d”, 返回值)
        recog_status = #MSP_REC_STATUS_SPEECH_COMPLETE
        跳出循环 ()
    .默认

    .判断结束
    .如果真 (rslt_status = #MSP_REC_STATUS_SUCCESS)
        rec_result = 识_识别结果 (会话ID, rslt_status, 5000, 返回值)
        .如果真 (返回值 ≠ 0)
            ' 语音识别发生错误 (4, 返回值)
            调试输出 (“获取识别文本失败”, 返回值)
            rslt_status = #MSP_REC_STATUS_SPEECH_COMPLETE
            跳出循环 ()
        .如果真结束

    .如果真结束
    .如果真 (rslt_status = #MSP_REC_STATUS_SPEECH_COMPLETE)
        调试输出 (“所有结果都获取完毕”)
        跳出循环 ()
    .如果真结束
    .如果真 (ep_status = #ISR_EP_AFTER_SPEECH)  ' /* 检测到音频后端点,停止发送音频 */
        调试输出 (“end point of speech has been detected!”)
        跳出循环 ()
    .如果真结束

    ' /* 如果是实时采集音频,可以省略此操作。5KB大小的16KPCM持续的时间是160毫秒 */
    延时 (160)
.判断循环尾 ()
.判断循环首 (rslt_status ≠ #MSP_REC_STATUS_SPEECH_COMPLETE)
    rec_result = 识_识别结果 (会话ID, rslt_status, 5000, 返回值)
    .如果真 (返回值 ≠ #MSP_SUCCESS)
        ' 语音识别发生错误 (5, 返回值)
        调试输出 (“获取失败”, 返回值)
        跳出循环 ()
    .如果真结束
    .如果真 (rec_result ≠ “”)
        调试输出 (“获取结果”, rec_result)
        跳出循环 ()
    .如果真结束
    ' /* sleep一下很有必要,防止MSC端无缓存的识别结果时浪费CPU资源 */
    延迟 (200)


.判断循环尾 ()
para_name = “upflow;downflow”
para_value = 取空白文本 (32)
value_len = 32
返回值 = 识_查询信息 (会话ID, para_name, para_value, value_len)
.如果真 (返回值 ≠ #MSP_SUCCESS)
    ' 语音识别发生错误 (6, 返回值)
    调试输出 (“语音识别查询信息 失败, 错误代码为: %d”, 返回值)
.如果真结束
' ----------------------------------分割------------------------------------
返回值 = 识_结束会话 (会话ID, “normal end”)
.如果真 (返回值 ≠ #MSP_SUCCESS)
    ' 语音识别发生错误 (7, 返回值)
    调试输出 (“QISRSessionEnd 失败, 错误代码为: %d”, 返回值)
.如果真结束




' ----------------------------------分割------------------------------------
返回值 = 识_逆初始化 ()
.如果真 (返回值 ≠ #MSP_SUCCESS)
    ' 语音识别发生错误 (8, 返回值)
    调试输出 (“语音识别逆初始化 失败, 错误代码为: %d”, 返回值)
.如果真结束


返回 (rec_result)  ' 可以根据您的需要返回任意数值

楼内回复

我突然想学易语言了。咱们中文写的程序就是不一样。  详情 发表于 2017-4-5 16:43
使用道具 举报 回复
〆自在 发表于 2013-4-12 22:29:07
3#
第一次发现易语言竟然比英文还要难懂.......呵呵{:soso_e113:},正在研究VB如何识别语音,VB合成语音已经搞定了
使用道具 举报 回复
君安智能 发表于 2013-5-2 12:35:28
4#
顶顶更健康~
使用道具 举报 回复
一无所有 发表于 2013-8-24 04:55:31
5#
支持个、我也弄易语言的。。
使用道具 举报 回复
卡一卡 发表于 2014-2-20 14:08:01
6#
这贴! 果断顶!!!!!
使用道具 举报 回复
875613005@qq.co 发表于 2014-7-28 17:48:03
7#
最近正在研究,学习了~
使用道具 举报 回复
ma5ter 发表于 2015-9-19 10:49:33
8#
好东西,感谢分享!支持!!!!
使用道具 举报 回复
kmyqb2016 发表于 2016-3-19 01:47:13
9#
需要更新了,只有在线的,整个离线的嘛?
使用道具 举报 回复
wanglaihuai 发表于 2017-1-10 20:11:11
10#
楼主威武了,找遍全网,易语言的都少见。
使用道具 举报 回复