语音识别代码

合集下载

男女生语音识别代码

男女生语音识别代码
%filename:manwoman.m
%different man from woman.
%===========================================================
clear;
if nargin<1;action='initialized';end;
grid on % 添加网格
% pause;
[xmax,index]=max(data1);
timewin=floor(0.015*fs);
xwin=data1(index-timewin:index+timewin);
grid on % 添加网格
% pause;
% 对采集数据作滤波处理
blocksize =length(data1); % 计算窗函数长度
window = hanning(blocksize); % 计算汉宁窗函数(此函数为MATLAB自带)
plot(time,data) % 以时间为横轴,数据为纵轴作图
xlabel('Time (sec.)') % 标注横坐标
%ylabel('Signal Level (Volts)') % 标注纵坐标
data2=window.*data1; % 对数据先作加窗处理
% wp=[70,400]; %100Hz--400Hz
% wp=wp*2/fs;
%===========================================================
% pause;
data1=x(:,1);

python kaldi用法 -回复

python kaldi用法 -回复

python kaldi用法-回复Python Kaldi是一个与Kaldi语音识别工具包结合使用的Python库。

Kaldi是一个著名的开源语音识别工具,它提供了一整套的命令行工具和C++库,可以用于构建和训练语音识别模型。

Python Kaldi的出现使得使用Python进行语音识别变得更加简单和方便。

在本文中,我们将一步一步回答关于Python Kaldi的相关问题。

第一步:安装Python Kaldi要使用Python Kaldi,首先需要在计算机上安装Kaldi工具包。

Kaldi的安装过程可能比较复杂,因为它依赖于许多其他软件包和库。

你可以在Kaldi的官方网站(Kaldi。

要安装Python Kaldi,最简单的方法是使用pip命令。

打开终端或命令提示符,并运行以下命令:pip install pykaldi这将自动从PyPI(Python Package Index)下载并安装Python Kaldi 库及其依赖项。

第二步:使用Python Kaldi安装完成后,我们可以开始使用Python Kaldi进行语音识别任务。

首先,我们需要准备一些语音数据和相应的标签。

假设我们有一些.wav格式的语音文件和对应的文本文件,我们可以使用Python Kaldi将它们转换为Kaldi要求的格式。

下面是一个简单的示例代码:pythonfrom pykaldi import KaldiData# 创建一个KaldiData对象data = KaldiData()# 添加语音和标签data.add_audio("speech.wav")data.add_text("speech.txt")# 将数据转换为Kaldi格式data.export_to_kaldi("data")以上代码将把"speech.wav"和"speech.txt"转换为Kaldi格式,并保存在"data"目录中。

matlab语音识别系统(源代码)

matlab语音识别系统(源代码)

实用文案(威海)《智能仪器》课程设计题目: MATLAB实现语音识别功能班级:学号:姓名:同组人员:任课教师:完成时间:2012/11/3目录一、设计任务及要求 (1)二、语音识别的简单介绍2.1语者识别的概念 (2)2.2特征参数的提取 (3)2.3用矢量量化聚类法生成码本 (3)2.4VQ的说话人识别 (4)三、算法程序分析3.1函数关系 (4)3.2代码说明 (5)3.2.1函数mfcc (5)3.2.2函数disteu (5)3.2.3函数vqlbg (6)3.2.4函数test (6)3.2.5函数testDB (7)3.2.6 函数train (8)3.2.7函数melfb (8)四、演示分析 (9)五、心得体会 (11)附:GUI程序代码 (12)一、设计任务及要求用MATLAB实现简单的语音识别功能;具体设计要求如下:用MATLAB实现简单的数字1~9的语音识别功能。

二、语音识别的简单介绍基于VQ的说话人识别系统,矢量量化起着双重作用。

在训练阶段,把每一个说话者所提取的特征参数进行分类,产生不同码字所组成的码本。

在识别(匹配)阶段,我们用VQ方法计算平均失真测度(本系统在计算距离d时,采用欧氏距离测度),从而判断说话人是谁。

语音识别系统结构框图如图1所示。

图1 语音识别系统结构框图2.1语者识别的概念语者识别就是根据说话人的语音信号来判别说话人的身份。

语音是人的自然属性之一,由于说话人发音器官的生理差异以及后天形成的行为差异,每个人的语音都带有强烈的个人色彩,这就使得通过分析语音信号来识别说话人成为可能。

用语音来鉴别说话人的身份有着许多独特的优点,如语音是人的固有的特征,不会丢失或遗忘;语音信号的采集方便,系统设备成本低;利用电话网络还可实现远程客户服务等。

因此,近几年来,说话人识别越来越多的受到人们的重视。

与其他生物识别技术如指纹识别、手形识别等相比较,说话人识别不仅使用方便,而且属于非接触性,容易被用户接受,并且在已有的各种生物特征识别技术中,是唯一可以用作远程验证的识别技术。

Python中如何进行AI语音识别

Python中如何进行AI语音识别

Python中如何进行AI语音识别随着人工智能技术的发展,语音识别技术已经得到广泛应用,成为人们生活中不可或缺的一部分。

而Python作为一种流行的编程语言,已经在AI领域中扮演着重要的角色。

那么,在Python中如何进行AI语音识别呢?本文将围绕这一问题进行论述。

一、Python语音识别库介绍Python语音识别库包括google speech recognition、sphinx、pocketsphinx、Envelop等几种。

下面将对它们一个个进行介绍。

1. Google Speech RecognitionGoogle Speech Recognition是使用Google的API实现的语音识别库,它可以将音频文件转化为文本。

它可以支持多种语言,如英语、法语、德语、中文等。

它的优点是使用方便、准确度高,但缺点是需要稳定的网络连接,而且需要获取API密钥。

使用方法:(1)安装库。

```pythonpip install SpeechRecognition```(2)使用Google API密钥调用```pythonimport speech_recognition as srdef recognize_speech(audio_file_path):r = sr.Recognizer()with sr.AudioFile(audio_file_path) as source: audio = r.record(source)try:text = r.recognize_google(audio)return textexcept Exception as e:print(e)```2. SphinxSphinx是CMU开发的一种免费语音识别工具包。

由于它可以使用离线识别,因此它是一种非常强大、适用性广泛的语音识别工具。

它能够支持多种操作系统,包括Windows、MacOS、Linux等。

它的优点是支持离线识别,准确度高,但需要一定的学习和训练过程。

Android轻松实现语音识别详解及实例代码

Android轻松实现语音识别详解及实例代码

Android轻松实现语⾳识别详解及实例代码使⽤Intent调⽤语⾳识别程序说明Android中主要通过RecognizerIntent来实现语⾳识别,其实代码⽐较简单,但是如果找不到语⾳识别设备,就会抛出异常ActivityNotFoundException,所以我们需要捕捉这个异常。

⽽且语⾳识别在模拟器上是⽆法测试的,因为语⾳识别是访问google 云端数据,所以如果⼿机的⽹络没有开启,就⽆法实现识别声⾳的!⼀定要开启⼿机的⽹络,如果⼿机不存在语⾳识别功能的话,也是⽆法启⽤识别!注意:使⽤前需要安装语⾳识别程序。

如《语⾳搜索》,其使⽤的语⾳识别技术来⾃于Google,Intent可以识别到该程序。

本例参考⾃android例程:development/samples/ApiDemos/src/com/example/android/apis/app/VoiceRecognition.java核⼼代码及说明package com.example.test;import android.app.Activity;import android.content.Intent;import android.content.pm.PackageManager;import android.os.Bundle;import android.speech.RecognizerIntent;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;import java.util.ArrayList;import java.util.List;public class MainActivity extends Activity implements OnClickListener {private static final int VOICE_RECOGNITION_REQUEST_CODE = 1234;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);Button btn = (Button) findViewById(R.id.btn); // 识别按钮PackageManager pm = getPackageManager();List activities = pm.queryIntentActivities(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0); // 本地识别程序// new Intent(RecognizerIntent.ACTION_WEB_SEARCH), 0); // ⽹络识别程序/** 此处没有使⽤捕捉异常,⽽是检测是否有语⾳识别程序。

AI语音识别技术的使用教程

AI语音识别技术的使用教程

AI语音识别技术的使用教程随着人工智能技术的快速发展,AI语音识别技术逐渐成为人们生活和工作中不可或缺的一部分。

它使用人工智能算法和模型,将人类的声音转化为可识别和理解的文本,为用户提供了更加便捷和高效的交互体验。

本文将为大家介绍AI语音识别技术的使用教程,帮助读者了解如何利用这一技术提升工作和生活效率。

一、选择合适的AI语音识别工具首先,我们需要选择适合我们需求的AI语音识别工具。

当前市场上有多种成熟的AI语音识别工具可供选择,例如百度语音识别、科大讯飞语音识别、阿里云语音识别等。

我们可以根据自己的需求和预算选择合适的工具。

二、获取API密钥在开始使用AI语音识别技术之前,我们需要先获取相应的API密钥。

不同的语音识别工具提供了不同的API接口,我们需要根据选择的工具进行相应的申请。

一般情况下,我们需要注册一个开发者账号,并通过开发者后台获取到API密钥。

三、搭建开发环境在获得API密钥后,我们需要搭建相应的开发环境。

根据选择的语音识别工具,我们需要下载和安装相应的语音识别SDK或者API库。

一般来说,这些工具提供了详细的文档和示例代码,可以帮助我们快速入门。

四、语音识别示例代码接下来,我们可以尝试运行一些语音识别的示例代码,以了解基本的使用方法和功能。

首先,我们需要将语音文件转换为适合识别的格式。

通常,语音识别工具支持多种音频格式,如wav、mp3等。

我们可以使用音频编辑软件或者相应的命令行工具将音频文件转换为支持的格式。

然后,我们可以使用SDK或者API提供的接口上传音频文件并获取识别结果。

五、调试和优化完成基本的语音识别功能后,我们可以对识别结果进行调试和优化。

有时候,语音识别可能会对一些特定的语音或口音识别出现偏差。

我们可以通过调整识别模型的参数或者使用一些特定的配置文件来优化识别效果。

此外,一些语音识别工具还提供了自定义的语音模型训练接口,可以根据自己的需求训练自己的语音模型,提高识别准确率。

python深度学习之语音识别(speechrecognize)

python深度学习之语音识别(speechrecognize)

python深度学习之语⾳识别(speechrecognize)问题描述speech recognize是kaggle上1,2年前的⼀个赛题,主要描述的是如果在各种环境中识别出简单的英⽂单词发⾳,⽐如bed,cat,right之类的语⾳。

提供的训练集是.wav格式的语⾳,解压后数据集⼤⼩在2G左右。

训练集分析语⾳识别相对图⽚识别来说,是⼀个区别较⼤的领域。

所以⾸先要了解训练集的基本特征,理清不同语⾳之间的共性。

振幅和频率def log_specgram(audio, sample_rate, window_size=20,step_size=10, eps=1e-10):nperseg = int(round(window_size * sample_rate / 1e3))noverlap = int(round(step_size * sample_rate / 1e3))freqs, times, spec = signal.spectrogram(audio,fs=sample_rate,window='hann',nperseg=nperseg,noverlap=noverlap,detrend=False)return freqs, times, np.log(spec.T.astype(np.float32) + eps)def plt_specgram(freqs, times, spectrogram):fig = plt.figure(figsize=(14, 8))ax1 = fig.add_subplot(211)ax1.set_title('Raw wave of ' + filename)ax1.set_ylabel('Amplitude')ax1.plot(np.linspace(0, sample_rate / len(samples), sample_rate), samples)ax2 = fig.add_subplot(212)ax2.imshow(spectrogram.T, aspect='auto', origin='lower',extent=[times.min(), times.max(), freqs.min(), freqs.max()])ax2.set_yticks(freqs[::16])ax2.set_xticks(times[::16])ax2.set_title('Spectrogram of ' + filename)ax2.set_ylabel('Freqs in Hz')ax2.set_xlabel('Seconds')plt.savefig('./output/yes_0a7c2a8d_nohash_0.png')plt.show()train_audio_path = './input/train/audio/'filename = '/yes/0a7c2a8d_nohash_0.wav'sample_rate, samples = wavfile.read(str(train_audio_path) + filename)# print(sample_rate, samples)# 频谱图freqs, times, spectrogram = log_specgram(samples, sample_rate)plt_specgram(freqs, times, spectrogram)声⾳强度def plt_spectrogram():plt.figure(figsize=(12, 4))librosa.display.specshow(log_S, sr=sample_rate, x_axis='time', y_axis='mel')plt.title('Mel power spectrogram ')plt.colorbar(format='%+02.0f dB')plt.tight_layout()plt.savefig('./output/spectrogram.png')plt.show()# 光谱图sig = samplessig = sig / max(abs(sig))S = librosa.feature.melspectrogram(y=sig, sr=sample_rate, n_mels=128)log_S = librosa.power_to_db(S, ref=np.max)plt_spectrogram()三维图像def spectrogram_3d():data = [go.Surface(z=spectrogram.T)]layout = yout(title='Specgtrogram of "yes" in 3d',scene=dict(yaxis=dict(title='Frequencies'),xaxis=dict(title='Time'),zaxis=dict(title='Log amplitude'),),)fig = go.Figure(data=data, layout=layout)py.plot(fig)spectrogram_3d()不同⾳频的总数统计def count_summary():dirs.sort()print('Number of labels: ' + str(len(dirs)))number_of_recordings = []for direct in dirs:waves = [f for f in os.listdir(join(train_audio_path, direct)) if f.endswith('.wav')]number_of_recordings.append(len(waves))speech_count = dict(map(lambda x, y: [x, y], dirs, number_of_recordings))print(speech_count)count_summary()"""输出{'_background_noise_': 6, 'bed': 1713, 'bird': 1731, 'cat': 1733, 'dog': 1746, 'down': 2359, 'eight': 2352, 'five': 2357, 'four': 2372, 'go': 2372, 'happy': 1742, 'house': 1750, 'left': 2353, 'marvin': 1746, 'nine': 2364, 'no': 2375, 'off': 2357, 'on': 2367, 'one': 2370 """每个英⽂发⾳的特征识别def mean_fft():to_keep = 'yes no up down left right on off stop go'.split()dir = [d for d in dirs if d in to_keep]print(dir)for direct in dir:vals_all = []spec_all = []waves = [f for f in os.listdir(join(train_audio_path, direct)) if f.endswith('.wav')]for wav in waves:sample_rate, samples = wavfile.read(train_audio_path + direct + '/' + wav)if samples.shape[0] != 16000:continuexf, vals = custom_fft(samples, 16000)vals_all.append(vals)freqs, times, spec = log_specgram(samples, 16000)spec_all.append(spec)plt.figure(figsize=(14, 4))plt.subplot(121)plt.title('Mean fft of ' + direct)plt.plot(np.mean(np.array(vals_all), axis=0))plt.grid()plt.subplot(122)plt.title('Mean specgram of ' + direct)plt.imshow(np.mean(np.array(spec_all), axis=0).T, aspect='auto', origin='lower',extent=[times.min(), times.max(), freqs.min(), freqs.max()])plt.yticks(freqs[::16])plt.xticks(times[::16])plt.savefig('./output/mean_fft_' + direct + '.png')plt.show()mean_fft()代码是把所有英⽂单词的特征图都输出,这⾥只展⽰down和yes,2个特征图原始数据处理for label, fname in zip(labels, fnames):sample_rate, samples = wavfile.read(os.path.join(train_data_path, label, fname))samples = pad_audio(samples)if len(samples) > 16000:n_samples = chop_audio(samples)else:n_samples = [samples]for samples in n_samples:resampled = signal.resample(samples, int(new_sample_rate / sample_rate * samples.shape[0]))_, _, specgram = log_specgram(resampled, sample_rate=new_sample_rate)y_train.append(label)x_train.append(specgram)x_train = np.array(x_train)x_train = x_train.reshape(tuple(list(x_train.shape) + [1]))y_train = label_transform(y_train)label_index = y_train.columns.valuesy_train = y_train.valuesy_train = np.array(y_train)del labels, fnamesgc.collect()cnn建模def model_cnn(x_train, y_train):input_shape = (99, 81, 1)nclass = 12inp = Input(shape=input_shape)norm_inp = BatchNormalization()(inp)img_1 = Convolution2D(8, kernel_size=2, activation=activations.relu)(norm_inp)img_1 = Convolution2D(8, kernel_size=2, activation=activations.relu)(img_1)img_1 = MaxPooling2D(pool_size=(2, 2))(img_1)img_1 = Dropout(rate=0.2)(img_1)img_1 = Convolution2D(16, kernel_size=3, activation=activations.relu)(img_1)img_1 = Convolution2D(16, kernel_size=3, activation=activations.relu)(img_1)img_1 = MaxPooling2D(pool_size=(2, 2))(img_1)img_1 = Dropout(rate=0.2)(img_1)img_1 = Convolution2D(32, kernel_size=3, activation=activations.relu)(img_1)img_1 = MaxPooling2D(pool_size=(2, 2))(img_1)img_1 = Dropout(rate=0.2)(img_1)img_1 = Flatten()(img_1)dense_1 = BatchNormalization()(Dense(128, activation=activations.relu)(img_1))dense_1 = BatchNormalization()(Dense(128, activation=activations.relu)(dense_1))dense_1 = Dense(nclass, activation=activations.softmax)(dense_1)model = models.Model(inputs=inp, outputs=dense_1)opt = optimizers.Adam()pile(optimizer=opt, loss=losses.binary_crossentropy)model.summary()x_train, x_valid, y_train, y_valid = train_test_split(x_train, y_train, test_size=0.1, random_state=2017)model.fit(x_train, y_train, batch_size=16, validation_data=(x_valid, y_valid), epochs=3, shuffle=True, verbose=2)model.save(os.path.join(model_path, 'cnn.model'))return modelmodel = model_cnn(x_train, y_train)"""输出Using TensorFlow backend.2019-06-15 20:59:45.453845 task begin./input/train/audio2019-06-15 20:59:46.634215 xy begin/Users/user/Library/Python/3.6/lib/python/site-packages/scipy/io/wavfile.py:273: WavFileWarning: Chunk (non-data) not understood, skipping it.WavFileWarning)2019-06-15 21:02:35.116550 reshape begin2019-06-15 21:02:46.166546 model beginWARNING:tensorflow:From /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be rem Instructions for updating:Colocations handled automatically by placer.2019-06-15 21:02:46.278603: I tensorflow/core/platform/cpu_feature_:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA_________________________________________________________________Layer (type) Output Shape Param #=================================================================input_1 (InputLayer) (None, 99, 81, 1) 0_________________________________________________________________batch_normalization_1 (Batch (None, 99, 81, 1) 4_________________________________________________________________conv2d_1 (Conv2D) (None, 98, 80, 8) 40_________________________________________________________________conv2d_2 (Conv2D) (None, 97, 79, 8) 264_________________________________________________________________max_pooling2d_1 (MaxPooling2 (None, 48, 39, 8) 0_________________________________________________________________dropout_1 (Dropout) (None, 48, 39, 8) 0_________________________________________________________________conv2d_3 (Conv2D) (None, 46, 37, 16) 1168_________________________________________________________________conv2d_4 (Conv2D) (None, 44, 35, 16) 2320_________________________________________________________________max_pooling2d_2 (MaxPooling2 (None, 22, 17, 16) 0_________________________________________________________________dropout_2 (Dropout) (None, 22, 17, 16) 0_________________________________________________________________conv2d_5 (Conv2D) (None, 20, 15, 32) 4640_________________________________________________________________max_pooling2d_3 (MaxPooling2 (None, 10, 7, 32) 0_________________________________________________________________dropout_3 (Dropout) (None, 10, 7, 32) 0_________________________________________________________________flatten_1 (Flatten) (None, 2240) 0_________________________________________________________________dense_1 (Dense) (None, 128) 286848_________________________________________________________________batch_normalization_2 (Batch (None, 128) 512_________________________________________________________________dense_2 (Dense) (None, 128) 16512_________________________________________________________________batch_normalization_3 (Batch (None, 128) 512_________________________________________________________________dense_3 (Dense) (None, 12) 1548=================================================================Total params: 314,368Trainable params: 313,854Non-trainable params: 514_________________________________________________________________Instructions for updating:Use tf.cast instead.Train on 58356 samples, validate on 6485 samplesEpoch 1/3- 737s - loss: 0.1415 - val_loss: 0.0874Epoch 2/3- 608s - loss: 0.0807 - val_loss: 0.0577Epoch 3/3- 518s - loss: 0.0636 - val_loss: 0.04992019-06-15 21:33:58.518621 predict begin"""预测del x_train, y_traingc.collect()index = []results = []for fnames, imgs in test_data_generator(batch=32):predicts = model.predict(imgs)predicts = np.argmax(predicts, axis=1)predicts = [label_index[p] for p in predicts]index.extend(fnames)results.extend(predicts)df = pd.DataFrame(columns=['fname', 'label'])df['fname'] = indexdf['label'] = resultsdf.to_csv(os.path.join(out_path, 'sub.csv'), index=False)关于预测的数据集,kaggle提供的压缩包有2,3G,解压后有将近10w条⾳频,个⼈笔记本吃不消。

erophonere代码

erophonere代码

erophonere代码标题:erophonere 代码正文:ERophonere 是一种基于 Python 的开源语音识别库,它允许用户将音频文件转换为文本。

下面是一个简单的代码示例,展示了如何使用 ERophonere 进行语音识别:```pythonfrom erophonere import Erophonerefrom erophonere.audio import AudioSegmentfrom erophonere.features import InitializeFeaturesfrom erophonere.results import TextRecognitionResultimport speech_recognition as sr# 初始化 ERophonere 实例er = Erophonere()# 读取音频文件audio_file =AudioSegment.from_wav("path/to/audiofile.wav")# 使用 ERophonere 进行语音识别RecognitionResult = er.recognize_google(audio_file, language="zh-CN")# 获取识别结果if RecognitionResult is not None:# 打印识别结果print(RecognitionResult.text)else:print("语音识别未成功")```上述代码片段使用了 ERophonere 的`recognize_google`方法进行语音识别,该方法需要传入音频文件的路径和目标语言。

在调用`recognize_google`方法之后,ERophonere 将返回一个`RecognitionResult`对象,该对象包含识别结果。

用户可以调用`text`属性获取识别结果的文本内容。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CPaintDC dc(this);
if(flag)DrawArrow(pt_Start,pt_End,20,20);
CDialog::OnPaint();
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSpeechRecognitionDlg, CDialog)
//{{AFX_MSG_MAP(CSpeechRecognitionDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_CLOSE()
ON_BN_CLICKED(IDC_BTN_INFO, OnBtnInfo)
ON_BN_CLICKED(IDC_BTN_SET, OnBtnSet)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CSpeechRecognitionDlg::OnPaint()
{
return (HCURSOR) m_hIcon;
}
void CSpeechRecognitionDlg::OnClose()
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CSpeechRecognitionDlg::OnQueryDragIcon()
// CSpeechRecognitionDlg dialog
CSpeechRecognitionDlg::CSpeechRecognitionDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSpeechRecognitionDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CSpeechRecognitionDlg)
return TRUE; // return TRUE unless you set the focus to a control
}
void CSpeechRecognitionDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
}
*ppResult = event.RecoResult();
if (*ppResult)
{
(*ppResult)->AddRef();
}
return hr;
}
/////////////////////////////////////////////////////////////////////////////
// CSpeechRecognitionDlg message handlers
BOOL CSpeechRecognitionDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
strUp="上边";
strDown="下边";
strRight="右边";
strLeft="左边";
hr = cpRecoCtxt.CoCreateInstance(CLSID_SpSharedRecoContext);
hr = cpRecoCtxt->GetVoice(&cpVoice);
hThread=CreateThread(NULL,0,RecvProc,NULL,0,NULL);
#endif
CComPtr<ISpRecoContext> cpRecoCtxt;
CComPtr<ISpRecoGrammar> cpGrammar;
CComPtr<ISpVoice> cpVoice;
HRESULT hr = E_FAIL;
inline HRESULT BlockForResult(ISpRecoContext * pRecoCtxt, ISpRecoResult ** ppResult)
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
}
void CSpeechRecognitionDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSpeechRecognitionDlg)
// NOTE: the ClassWizarபைடு நூலகம் will add DDX and DDV calls here
/ SpeechRecognitionDlg.cpp : implementation file
//
#include "stdafx.h"
#include "SpeechRecognition.h"
#include "SpeechRecognitionDlg.h"
#include "math.h"
#include "DlgSet.h"
相关文档
最新文档