导航:首页 > 操作系统 > 单片机语音识别程序

单片机语音识别程序

发布时间:2022-11-29 07:10:23

❶ 51单片机的语音识别

自己做也可以做了,但是识别效果要看你的处理运算了,比如有用MFCC数学工具提取语音特征进行识别的,具体你查查吧。

❷ 51单片机语音识别

比较难,51做不到,如果说加相关芯片,唯一需要加的就是DSP了,不过既然用DSP了,为何还要用51呢,声音识别需要做FFT运算得到频域的特征值,51的运算能力达不到。

❸ 单片机做语音程序

加一个语音芯片(用ISD4000即可)
加一个实时时钟芯片(用PCF8563P即可)
先录好音,再用单片机程序去控制这两个芯片就可以实现了。
我以前做过的,并不是很难。

❹ 求凌阳单片机语音控制程序

// 工程名称: Car_Demo
// 功能描述: 实现小车的语音控制
// 涉及的库: CMacro1016.lib
// bsrv222SDL.lib
// sacmv26e.lib
// 组成文件: main.c
// Flash.asm, hardware.asm,ISR.asm
// hardware.h,s480.h, hardware.inc
// 硬件连接: IOA0-----KEY1
// IOA1-----KEY2
// IOA2-----KEY3
// IOB8-----前进
// IOB9-----倒车
// IOB10----左拐
// IOB11----右拐
// 维护记录: 2005-12-12 v1.0
//========================================================

#include "s480.h"
#include "bsrsd.h"

#define P_IOA_Data (volatile unsigned int *)0x7000
#define P_IOA_Dir (volatile unsigned int *)0x7002
#define P_IOA_Attrib (volatile unsigned int *)0x7003
#define P_IOB_Data (volatile unsigned int *)0x7005
#define P_IOB_Dir (volatile unsigned int *)0x7007
#define P_IOB_Attrib (volatile unsigned int *)0x7008
#define P_TimerA_Data (volatile unsigned int *)0x700A
#define P_TimerA_Ctrl (volatile unsigned int *)0x700B
#define P_TimerB_Data (volatile unsigned int *)0x700C
#define P_TimerB_Ctrl (volatile unsigned int *)0x700D
#define P_Watchdog_Clear (volatile unsigned int *)0x7012
#define P_INT_Mask (volatile unsigned int *)0x702D
#define P_INT_Clear (volatile unsigned int *)0x7011

#define NAME_ID 0x100
#define COMMAND_GO_ID 0x101
#define COMMAND_BACK_ID 0x102
#define COMMAND_LEFT_ID 0x103
#define COMMAND_RIGHT_ID 0x104

#define S_NAME 0 //给我取个名字吧
#define S_ACT1 1 //前进
#define S_ACT2 2 //倒车,请注意
#define S_ACT3 3 //左拐
#define S_ACT4 4 //右拐
#define S_RDY 5 //Yeah
#define S_AGAIN 6 //请再说一遍
#define S_NOVOICE 7 //没有听到任何声音
#define S_CMDDIFF 8 //说什么暗语呀
#define S_NOISY 8 //说什么暗语呀
#define S_START 9 //准备就绪,开始辨识
#define S_GJG 10 //拐就拐
#define S_DCZY 11 //倒车,请注意

extern unsigned int BSR_SDModel[100]; //外部变量BSR_SDModel[100],辨识器自带
extern void F_FlashWrite1Word(unsigned int addr,unsigned int Value);
extern void F_FlashErase(unsigned int sector);
unsigned int uiTimeset = 3; //运行时间定时,调整该参数控制运行时间
unsigned int uiTimecont; //运行时间计时

//=============================================================
// 语法格式: void Delay();
// 实现功能: 延时
// 参数: 无
// 返回值: 无
//=============================================================
void Delay()
{
unsigned int i;
for(i=0;i<0x3Fff;i++)
{
*P_Watchdog_Clear=0x0001;
}
}

//=============================================================
// 语法格式: void PlaySnd(unsigned SndIndex,unsigned DAC_Channel);
// 实现功能: 语音播放函数
// 参数: SndIndex-播放语音资源索引号
// DAC_Channel-播放声道选择
// 返回值: 无
//=============================================================
void PlaySnd(unsigned SndIndex,unsigned DAC_Channel)
{
BSR_StopRecognizer(); //停止识别器
SACM_S480_Initial(1); //初始化为自动播放
SACM_S480_Play(SndIndex, DAC_Channel, 3); //开始播放一段语音
while((SACM_S480_Status()&0x0001)!= 0) //是否播放完毕?
{
SACM_S480_ServiceLoop(); //解码并填充队列
*P_Watchdog_Clear=0x0001; //清看门狗
}
SACM_S480_Stop(); //停止播放
BSR_InitRecognizer(BSR_MIC); //初始化识别器
}

//=============================================================
// 语法格式: int TrainWord(int WordID,int SndID);
// 实现功能: 训练一条指令
// 参数: WordID-指令编码
// SndID-指令提示音索引号
// 返回值: 无
//=============================================================
int TrainWord(unsigned int WordID,unsigned int SndID)
{
int Result;
PlaySnd(SndID,3); //引导训练,播放指令对应动作
while(1)
{
Result = BSR_Train(WordID,BSR_TRAIN_TWICE); //训练两次,获得训练结果

if(Result==0)break;
switch(Result)
{
case -1: //没有检测出声音
PlaySnd(S_NOVOICE,3);
return -1;
case -2: //需要训练第二次
PlaySnd(S_AGAIN,3);
break;
case -3: //环境太吵
PlaySnd(S_NOISY,3);
return -3;
case -4: //数据库满
return -4;
case -5: //检测出声音不同
PlaySnd(S_CMDDIFF,3);
return -5;
case -6: //序号错误
return -6;
default:
break;
}
}
return 0;
}

//=============================================================
// 语法格式: void TrainSD();
// 实现功能: 训练函数
// 参数: 无
// 返回值: 无
//=============================================================
void TrainSD()
{
while(TrainWord(NAME_ID,S_NAME) != 0) ; //训练名称
while(TrainWord(COMMAND_GO_ID,S_ACT1) != 0) ; //训练第1个动作
while(TrainWord(COMMAND_BACK_ID,S_ACT2) != 0) ; //训练第2个动作
while(TrainWord(COMMAND_LEFT_ID,S_ACT3) != 0) ; //训练第3个动作
while(TrainWord(COMMAND_RIGHT_ID,S_ACT4) != 0) ; //训练第4个动作
}

//=============================================================
// 语法格式: void StoreSD();
// 实现功能: 存储语音模型函数
// 参数: 无
// 返回值: 无
//=============================================================
void StoreSD()
{ unsigned int ulAddr,i,commandID,g_Ret;
F_FlashWrite1Word(0xef00,0xaaaa);
F_FlashErase(0xe000);
F_FlashErase(0xe100);
F_FlashErase(0xe200);
ulAddr=0xe000;//********
for(commandID=0x100;commandID<0x105;commandID++)
{
g_Ret=BSR_ExportSDWord(commandID);
while(g_Ret!=0) //模型导出成功?
g_Ret=BSR_ExportSDWord(commandID);
for(i=0;i<100;i++) //保存语音模型SD1(0xe000---0xe063)
{
F_FlashWrite1Word(ulAddr,BSR_SDModel[i]);
ulAddr+=1;
}
}
}

//=============================================================
// 语法格式: void StoreSD();
// 实现功能: 装载语音模型函数
// 参数: 无
// 返回值: 无
//=============================================================
void LoadSD()
{ unsigned int *p,k,jk,Ret,g_Ret;
p=(int *)0xe000;
for(jk=0;jk<5;jk++)
{
for(k=0;k<100;k++)
{
Ret=*p;
BSR_SDModel[k]=Ret; //装载语音模型
p+=1;
}
g_Ret=BSR_ImportSDWord();
while(g_Ret!=0) //模型装载成功?
g_Ret=BSR_ImportSDWord();
}
}

//=============================================================
// 语法格式: void GoAhead();
// 实现功能: 前进子函数
// 参数: 无
// 返回值: 无
//=============================================================
void GoAhead() //前进
{
PlaySnd(S_ACT1,3); //提示
*P_IOB_Data=0x0100; //前进
*P_INT_Mask |= 0x0004; //以下为中断定时操作
__asm("int fiq,irq");
uiTimecont = 0;
}
//=============================================================
// 语法格式: void BackUp();
// 实现功能: 后退子函数
// 参数: 无
// 返回值: 无
//=============================================================
void BackUp() //倒退
{
PlaySnd(S_DCZY,3); //提示
*P_IOB_Data=0x0200; //倒退
*P_INT_Mask |= 0x0004; //以下为中断定时操作
__asm("int fiq,irq");
uiTimecont = 0;
}

//=============================================================
// 语法格式: void TurnLeft();
// 实现功能: 左转子函数
// 参数: 无
// 返回值: 无
//=============================================================
void TurnLeft() //左转
{
PlaySnd(S_GJG,3);
*P_IOB_Data=0x0900; //右转
Delay(); //延时
*P_IOB_Data=0x0500; //左转
*P_INT_Mask |= 0x0004; //以下为中断定时操作
__asm("int fiq,irq");
uiTimecont = 0;
}
//=============================================================
// 语法格式: void TurnRight();
// 实现功能: 右转子函数
// 参数: 无
// 返回值: 无
//=============================================================
void TurnRight() //右转
{
PlaySnd(S_GJG,3); //语音提示
*P_IOB_Data=0x0500; //左转
Delay(); //延时
*P_IOB_Data=0x0900; //右转
*P_INT_Mask |= 0x0004; //以下为中断定时操作
__asm("int fiq,irq");
uiTimecont = 0;
}

//=============================================================
// 语法格式: void Stop();
// 实现功能: 停车子函数
// 参数: 无
// 返回值: 无
//=============================================================
void Stop() //停车
{
*P_IOB_Data=0x0000; //停车
PlaySnd(S_RDY,3); //语音提示
}

//=============================================================
// 语法格式: void BSR(void);
// 实现功能: 辨识子函数
// 参数: 无
// 返回值: 无
//=============================================================
void BSR(void)
{
int Result; //辨识结果寄存
Result = BSR_GetResult(); //获得识别结果

if(Result>0) //有语音触发?
{
*P_IOB_Data=0x0000; //临时停车
switch(Result)
{
case NAME_ID: //识别出名称命令
Stop(); //停车待命
break;
case COMMAND_GO_ID: //识别出第一条命令
GoAhead(); //执行动作一:直走
break;
case COMMAND_BACK_ID: //识别出第二条命令
BackUp(); //执行动作二:倒车
break;
case COMMAND_LEFT_ID: //识别出第三条命令
TurnLeft(); //执行动作三:左转
break;
case COMMAND_RIGHT_ID: //识别出第四条命令
TurnRight(); //执行动作四:右转
break;
default:
break;
}
}
}
//=============================================================
// 语法格式: void IRQ5(void);
// 实现功能: 中断服务子函数
// 参数: 无
// 返回值: 无
//=============================================================
void IRQ5(void)__attribute__((ISR)); //运动定时控制
void IRQ5(void)
{
if(uiTimecont++ == uiTimeset)
{
*P_IOB_Data = 0x0000;
}
*P_INT_Clear = 0x0004;
}

//=============================================================
// 语法格式: int main(void);
// 实现功能: 主函数
// 参数: 无
// 返回值: 无
//=============================================================
int main(void)
{ unsigned int BS_Flag; //Train标志位

*P_IOA_Dir=0xff00; //初始化IOA,IOA0~7下拉输入
*P_IOA_Attrib=0xff00;
*P_IOA_Data=0x0000;

*P_IOB_Dir=0x0f00; //初始化IOB,IOB8~11同向输出
*P_IOB_Attrib=0x0f00;
*P_IOB_Data=0x0000;

BSR_DeleteSDGroup(0); //初始化存储器RAM
BS_Flag=*(unsigned int *)0xe000; //读存储单元0xe000
if(BS_Flag==0xffff) //没有经过训练(0xe000内容为0xffff)
{
TrainSD(); //训练
StoreSD(); //存储训练结果(语音模型)
}
else //经过训练(0xe000内容为0x0055)
{
LoadSD(); //语音模型载入识别器
}

PlaySnd(S_START,3); //开始识别提示
BSR_InitRecognizer(BSR_MIC); //初始化识别器

while(1)
{
BSR();
if((*P_IOA_Data)&0x0004) //是否重新训练
{
F_FlashErase(0xe000);
while(1);
}
}
}

//============================================================
// 文件名称:flash.asm
// 实现功能: SPCE061 32K flash 的读写
// 维护记录: 2003-6-9 V1.0
//============================================================

.INCLUDE hardware.inc

.DEFINE C_FLASH_SIZE 0x8000
.DEFINE C_FLASH_BLOCK_SIZE 0x100
.DEFINE C_FLASH_MATCH 0xAAAA
.DEFINE C_FLASH_PAGE_ERASE 0x5511 //擦除一页
.DEFINE C_FLASH_MASS_ERASE 0x5522 //
.DEFINE C_FLASH_1WORD_PGM 0x5533 //写一个字
.DEFINE C_FLASH_SEQUENT_PGM 0x5544 //写多个字
.DEFINE C_FLASH_MAIN_BLOCK 0x5555
.DEFINE C_FLASH_INFORM_BLOCK 0x5566

.CODE
//============================================================================================
//语法:void F_FlashWrite1Word(int addr,int Value )
//描述:写一个字到FLASH中
//参数:addr-被写数据的存储地址 Value-被写数据
//返回:无
//===============================================================================================
.PUBLIC _F_FlashWrite1Word
.DEFINE P_Flash_Ctrl 0x7555
_F_FlashWrite1Word: .proc
push bp to [sp]
bp = sp+1
r1 = C_FLASH_MATCH //AAAA
[P_Flash_Ctrl] = r1
r1 = C_FLASH_1WORD_PGM //5533
[P_Flash_Ctrl] = r1
r1 = [bp+3] //flash address
r2 = [bp+4] //data
[r1] = r2

pop bp from [sp]
retf
.ENDP

//=============================================================================================
//语法:F_FlashWrite(int sector,int &num, int size)
//描述:顺序写多个字
//参数:sector-被写数据的起始地址 &num-被写数据 size-写数据的数量
//返回:无
//=============================================================================================
.PUBLIC _F_FlashWrite
_F_FlashWrite: .proc
push bp to [sp]
bp = sp+1
r1 = [bp+3] //flash base address
r2 = [bp+4] //data
r3 = [bp+5] //多个字节
r4 = C_FLASH_MATCH //AAAA
[P_Flash_Ctrl] = r4
L_FlashWriteLoop:
r4 = C_FLASH_SEQUENT_PGM //5544
[P_Flash_Ctrl] = r4
r4 = [r2++]
[r1++] = r4

r3 -= 1
jnz L_FlashWriteLoop
[P_Flash_Ctrl] = r3 //写结束
pop bp from [sp]
retf
.ENDP

// ============================================================================================
//语法:void F_FlashErase(sector)
//描述:擦除256字节
//参数: sector-擦除页的起始地址
//返回:无
// ============================================================================================
.PUBLIC _F_FlashErase
_F_FlashErase: .proc
push bp to [sp]
bp = sp + 1
r1 = C_FLASH_MATCH //AAAA
[P_Flash_Ctrl] = r1
r1 = C_FLASH_PAGE_ERASE //5511
[P_Flash_Ctrl] = r1
r1 = [bp+3] //擦除一页
[r1] = r1

pop bp from [sp]
retf
.ENDP
.END

//============================================================
// 文件名称:ISR.asm
// 实现功能: 语音播放/识别中断服务
// 维护记录: 2003-9-9 V1.0
//============================================================
.include hardware.inc

.public _FIQ;

.external _BSR_FIQ_Routine
.external F_FIQ_Service_SACM_S480

.text
_FIQ:
push R1,R5 to [sp]; // 寄存器压栈保护
R1 = C_FIQ_TMA;
[P_INT_Clear] = R1;
call _BSR_FIQ_Routine //语音识别中断服务
call F_FIQ_Service_SACM_S480; //语音播放中断服务
pop R1,R5 from [sp];
reti;

❺ 有关凌阳61单片机的语音识别的

你说的问题不是你想的那么简单,除了你的单片机还必须其他的芯片配套才能完成的,如果光是直接识别语音那么有这么几点,
你需要一块音频采集芯片,然后搭建电路
你还需要一块音频解码芯片,
这些都是些大公司做好的成品,你需要的是去收集这些芯片的资料,然后合理搭建电路。
到最后的信号你才能够用单片机判别
做这个有点难度,希望你决定做就别怕苦,看资料最关键

❻ 单片机语音识别

这个用一般的单片机很难实现
涉及到复杂的算法,可以买到这种芯片
初学单片机可以从下面几点开始
1:学好基础的C,模电,数电
2:练习单片机开发板(参考吴鉴鹰单片机开发板),做些小实验,教程多看
3:有以上的基础后再做些复杂的项目,这个东西是积累和实践出来的

❼ 求高手编写一个语音识别系统的c语言程序代码,可以导入单片机的

我是做语音识别的,主要使用HTK进行语音识别。
如果想进一步做的的话,锦衣你学习一下因马尔科夫过程
还有问题的话,请继续提问

给分吧

❽ 跪求凌阳61单片机设计的语音识别系统的主程序

凌阳61单片机实现RCL,由C语言编写,凌阳61板实现功能-,C++ Builder,单片机开发/SCM
autocad预览控件.不需要安装autocad即可在界面浏览-,Delphi,绘图程序/Graph Drawing
本程序为基于matlab的小波分析的应用实例。-,matlab,界面编程/GUI Develop
高通brew平台上的BUIW控件中的ImageStaticWidget使用示例-,Visual C++,Static控件/Static control
客观合理化一天一片人体豆腐花规范化广泛非官方大哥大法国-,C++ Builder,界面编程/GUI Develop
本程序为基于matlab的插值分析与Euler解常微分方程的应用实例。-,matlab,界面编程/GUI Develop
用ASP.NET做的酒店管理系统,该系统主要处理酒店日常运营中涉及的客户信息.-,ASP,其他书籍/Other Books
EVC 读写INI文件 EVC 读写INI文件EVC 读写INI文件EVC 读写INI文件EVC 读写INI文件-,Visual C++,文件操作/File Operate
本程序介绍基于matlab的平方根及改进平方根算法。-,matlab,按钮控件/Button control
高通brew平台上的BUIW控件中的slider的示例程序-,Visual C++,界面编程/GUI Develop
塔顶地无可奈何花落去 人威风扫地雪 可耕地枯无可奈何花落去 无可奈何花落去饿-,Visual C++,GDI/图象编程/GDI-Bitmap
oblog31sql oblog31sql oblog31sql oblog31sql oblog31sql-,ASP,Web服务器/Web Server
MATLAB实现简单图象处理的程序,在matlab2006a上通过-,matlab,matlab例程/matlab
源码、运行程序、帮助文件、必须的数据库文件-,Windows_Unix,C#编程/CSharp
dos下的TCP/IP栈库函数,并提供了多种tcp/ip编程demo。 -,DOS,TCP/IP协议栈/TCP/IP Stack
MATLAB进入时显示的图标的程序实现,有动画效果!-,matlab,matlab例程/matlab
地方官梵蒂冈地方官法 方法方法方法方法方法 -,Unix_Linux,TreeView控件/TreeView
几个matlab的编程实例,对初学者有一定的帮助。-,matlab,界面编程/GUI Develop
用ASP.NET做的客户管理系统,该系统以客户管理中涉及的销售管理,合同管理为主体.-,ASP,其他书籍/Other Books
毕毕剥剥毕毕剥剥爸爸 毕毕剥剥毕毕剥剥爸爸 -,DOS,Static控件/Static control
将数据库的资料转档到EXCEL里进行保存-,Delphi,其他小程序/Other windows programs
数字图像中队图像进行模板匹配算法之前的预处理算法!-,Visual C++,图形/文字识别/Graph Recognize
存车处存车处存车处厂 滴滴答答滴滴答答得到 -,DOS,编辑框/EditBox
实数编码GA,也是从网上下载的。非要上传5个才能下载,哎,实在是没办法啊,这个也不知道能不能运行,不能的话请不要骂我哦,谢谢!!-,Visual C++,人工智能/AI-NN-PR
DS1302+AT89C2051的LED钟,可以显示年、周、月、日、小时、分钟、秒-,TEXT,其他小程序/Other windows programs
可耕地 唇形枯 要一地三三大哥有在一码元表的有遥有-,Visual C++,TreeView控件/TreeView
java写的遗传算法的例子,比较简单,如果解压缩的时候需要密码的话,应该是“1”。写的比较简单。是老早以前写的了。-,Java,人工智能/AI-NN-PR
汇编语言,用C51单片机实现交通灯控制!二极管模拟发光!-,Asm,单片机开发/SCM
通过串口控制步进电机控制器,实现联络,速度控制,步长-,Visual C++,串口编程/Com Port
绝佳的Tab View控件的方式之一,VC++6.0经过运行调试的,可直接使用-,Visual C++,TreeView控件/TreeView
以某中小规模汽车维修厂为案例,用ASP.NET做的仓库管理系统.-,ASP,其他书籍/Other Books
关机程序。。。。。。。。。。。。。。。。。-,Visual C++,Windows编程/Windows Develop
绝佳的Tab View控件的方式之二,VC++6.0经过运行调试的,可直接使用-,Visual C++,界面编程/GUI Develop
在VC6下基于OpenCV的轮廓检测程序,其中图像的二值化操作基于Canny和自适应阈值。通过trackbar来实现不同情况下的轮廓检测。-,Visual C++,图形/文字识别/Graph Recognize
绝佳的Tab View控件的方式之三,VC++6.0经过运行调试的,可直接使用-,Visual C++,界面编程/GUI Develop
用于首先获取需要下载的文件的大小,然后将其分块下载。-,Java,网络编程/WinSock-NDIS
用csocket模拟聊天室,可以在一台机子上模拟,也可以在不同机子上-,Visual C++,网络编程/WinSock-NDIS
这个好象也是从网络上找到一个基本遗传算法的例子,解压缩的时候如果需要密码的话,应该是“1”。-,Visual C++,人工智能/AI-NN-PR
本程序是运用java 语言 编写一款查看 网站源文件的程序 -,Java,其他/Other systems
使用C语言实现菜单控制的源程序,实现了学生成绩的管理.-,C-C++,界面编程/GUI Develop
在打开图像时,点击图像可在打开对话框中实时看到预览,绝好.-,Visual C++,界面编程/GUI Develop
用ASP.NET做的合同管理系统,该系统包括合同进展控制模块,员工管理模块,客户管理模块,项目管理模块,合同管理模块和合同统计模块等.-,ASP,其他书籍/Other Books
语音识别与合成工具箱.具有如下功能:时域分析,频域分析,LPC分析与合成等.-,matlab,matlab例程/matlab

❾ 51单片机如何实现语音功能

单片机需要增加语音功能,要么选择功能强大stm32之类的芯片,用内部的dac来模拟输出,要么就外挂一个语音芯片
语音芯片的作用
1、顾名思义,就在是产品上增加语音播报的功能,实现的也就是把语音播放出来
2、常见的如:停车场报金额、电梯报站、货车报“左转弯,请注意”等等,应用非常的广泛
语音芯片的种类,不过主要的分类基本也就大致三种
1、第一种,称之为OTP,就是那种SOP8封装的语音芯片,内置几段常用的语音,出厂之后就固话死了,不可修改
2、第二种,称之为flash语音芯片,通常是一个主控芯片外挂一个spiflash,主控芯片是不变的,而flash则是可以重复烧录的,但是语音往往只支持wav,所以音质会压缩的很差。代表的如WT588D
3、第三种,就是现在最优秀的KT404A芯片,他是支持MP3解码,比前面的两种在技术上是一个跨越,将MP3这种优秀的技术应用于语音芯片上,同时他强大的usb直接虚拟flash成为U盘,这样更新语音非常方便
您选的单片机有4个串口,随便拿一个出来控制KT404A就好了
KT404A外挂一个spiflash,通过usb直接更新语音

❿ 推荐一款适合51单片机的语音识别模块

推荐使用YQ5969,该模组系列可以支持1--8个咪头,该语音芯片可以根据客户具体需求提供单核--4核 32bit ARM核心的不同方案,可以支持本地和云端识别不同需求。5米内本地识别率 93%以上,云端识别率97%。从麦克风中输入词条(即语音指令),与存储在 SPI Flash 中语音相对比,如果一致,即识别正确,之后模块的串口 TX 会输出相应的指令,并且三个 IO 口(OUTA-OUTC)会输出相应的电平,同时喇叭播放语音。

阅读全文

与单片机语音识别程序相关的资料

热点内容
简单的游戏代码源码 浏览:345
金蝶服务器怎么改 浏览:594
h y p 6.vip 浏览:709
韩国战争电影十大巅峰之作 浏览:425
大尺度百合剧 浏览:112
为什么要叫毒app 浏览:492
编程类校赛 浏览:994
五十五度灰 浏览:351
android入门到精通pdf明日科技 浏览:491
解压缩文件怎么老重启 浏览:213
儿童智能关怀app苹果为什么不能用 浏览:707
tcpdump抓包命令 浏览:793
各大主播在用什么app看电影 浏览:421
泰国恐怖片 和尚 浏览:219
宁夏品质压缩机市场 浏览:186
日立螺杆压缩机维修 浏览:427
识别英语单词哪个app比较好 浏览:188
夫人被家丁强奸的泰国电影? 浏览:256
书香门第小说txt下载 浏览:454