from python_speech_features import mfcc代码出错

时间: 2023-09-03 13:10:00 浏览: 18
可能的原因是缺少必要的输入参数。`mfcc()`函数需要至少两个参数:音频信号和采样率。例如: ```python import numpy as np from python_speech_features import mfcc import scipy.io.wavfile as wav # 读取音频文件 rate, signal = wav.read("audio.wav") # 计算MFCC系数 mfcc_features = mfcc(signal, rate) print(mfcc_features) ``` 请确保已经安装了NumPy库和SciPy库,并且音频文件存在。如果还是出错,请提供完整的错误信息以便更好地帮助您解决问题。
相关问题

from python_speech_features import mfcc出错原因

出错的原因可能有很多,以下是一些常见的问题和解决方法: 1. ImportError: No module named 'python_speech_features' 这个错误通常是因为没有安装python_speech_features库。可以通过以下命令来安装: ``` pip install python_speech_features ``` 2. TypeError: 'module' object is not callable 这个错误通常是因为在调用`mfcc`函数时,使用了错误的语法或参数。请检查函数的输入参数是否正确,并确保函数名正确拼写。请参考上一个回答中的示例代码。 3. ValueError: frames must be greater than zero 这个错误通常是因为输入的音频信号长度不够,或者帧的大小设置过大。可以尝试调整帧的大小或者使用更长的音频信号。例如: ```python import numpy as np from python_speech_features import mfcc import scipy.io.wavfile as wav # 读取音频文件 rate, signal = wav.read("audio.wav") # 计算MFCC系数 mfcc_features = mfcc(signal, rate, winlen=0.025, winstep=0.01, numcep=13, nfilt=26, nfft=512, lowfreq=0, highfreq=None, preemph=0.97, ceplifter=22, appendEnergy=True) print(mfcc_features) ``` 在上面的示例代码中,我们使用了更小的帧大小(winlen=0.025)和步长(winstep=0.01),并且指定了其他参数的默认值。

from python_speech_features import mfcc from dtw import dtw

这段代码中,Python的库python_speech_features提供了用于提取MFCC特征的函数mfcc,dtw库提供了计算动态时间规整(DTW)距离的函数dtw。DTW是一种常用的时间序列相似度度量方法,它可以计算两个时间序列之间的最短距离,常用于语音识别、手写识别、运动捕捉等领域。在语音识别中,通常使用DTW来比较语音信号之间的相似度,以识别说话人或识别语音内容。

相关推荐

python_speech_features是Python中一个常用的语音信号处理库,其中的mfcc函数是用于计算梅尔频率倒谱系数(Mel Frequency Cepstral Coefficients,MFCC)的函数。 MFCC是语音信号处理中常用的特征参数,可以用于语音识别、说话人识别等任务。MFCC的计算过程包括以下几个步骤: 1. 分帧:将语音信号分成若干个短时窗口,通常使用汉明窗或其他窗函数对每个窗口进行加权。 2. 傅里叶变换:对每个窗口内的语音信号进行快速傅里叶变换(FFT),将信号从时域转换到频域。 3. 梅尔滤波器组:将频率轴划分为若干个梅尔滤波器组,每个梅尔滤波器组对应一个梅尔频率,用于模拟人耳对频率的响应。 4. 取对数:对每个梅尔滤波器组的能量取对数,得到梅尔频率谱系数(Mel Spectral Coefficients,MSC)。 5. 离散余弦变换:对MSC进行离散余弦变换(DCT),得到MFCC。 python_speech_features中的mfcc函数实现了上述MFCC的计算过程,可以将语音信号转换成一组MFCC特征向量。使用方法如下: python from python_speech_features import mfcc import scipy.io.wavfile as wav (rate, signal) = wav.read("test.wav") mfcc_feat = mfcc(signal, rate) 其中,rate是采样率,signal是语音信号的numpy数组。mfcc函数的返回值mfcc_feat是一个二维numpy数组,每行是一个MFCC特征向量。可以将mfcc_feat作为语音信号的特征向量,用于后续的语音识别任务。
音乐流派分类是一个非常有趣的问题,可以使用MFCC和GMM来实现。MFCC是一种用于音频信号特征提取的技术,可以将音频信号转换为一组与音高、音量等相关的特征向量。GMM是一种基于概率的分类器,可以用于将特征向量映射到不同的音乐流派。 下面是一个基于MFCC和GMM的音乐流派分类的Python代码示例: python import os import numpy as np import scipy.io.wavfile as wav from python_speech_features import mfcc from sklearn.mixture import GaussianMixture from sklearn.model_selection import train_test_split # 定义函数,提取MFCC特征 def extract_features(file_name): (rate, sig) = wav.read(file_name) mfcc_feat = mfcc(sig, rate, nfft=2048) return mfcc_feat # 定义函数,加载数据集 def load_data(dir_name): files = os.listdir(dir_name) data = [] for file in files: if file.endswith('.wav'): file_path = os.path.join(dir_name, file) features = extract_features(file_path) data.append(features) return data # 加载数据集 rock_data = load_data('path/to/rock/music') jazz_data = load_data('path/to/jazz/music') # 将数据集转换为numpy数组 rock_data = np.array(rock_data) jazz_data = np.array(jazz_data) # 为每个数据集添加标签 rock_labels = np.zeros(len(rock_data)) jazz_labels = np.ones(len(jazz_data)) # 将数据集合并 data = np.vstack((rock_data, jazz_data)) labels = np.hstack((rock_labels, jazz_labels)) # 拆分数据集为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(data, labels, test_size=0.2) # 训练GMM分类器 gmm = GaussianMixture(n_components=2, covariance_type='full') gmm.fit(X_train) # 预测测试集 y_pred = gmm.predict(X_test) # 计算准确率 accuracy = np.mean(y_pred == y_test) print('Accuracy:', accuracy) 这个代码示例假设你有两个文件夹,一个文件夹包含摇滚音乐文件,另一个文件夹包含爵士音乐文件。你需要将代码中的路径更改为你的文件夹路径,并根据需要更改GMM的参数。这个代码示例使用了sklearn库中的GaussianMixture类来训练GMM分类器,并使用numpy库计算准确率。
以下是基于Python和Kaldi工具包的GMM-HMM自动语音识别算法代码示例: python import kaldi_io import numpy as np from kaldi.feat.mfcc import Mfcc, MfccOptions from kaldi.feat.functions import compute_cmvn_stats from kaldi.hmm import HmmTopology, MakeAmDiagGmm, DecodableInterface, DecodableMatrixScaled from kaldi.matrix import SubVector, Vector from kaldi.util.table import SequentialMatrixReader, SequentialWaveReader from kaldi.fstext import SymbolTable, ReadFstKaldiGeneric from kaldi.decoder import LatticeFasterDecoder, CompactLatticeWriter # MFCC特征提取 def extract_mfcc(signal, sample_rate, num_mel_bins, num_ceps, use_energy=True, use_delta=True): mfcc_opts = MfccOptions() mfcc_opts.mel_opts.num_bins = num_mel_bins mfcc_opts.num_ceps = num_ceps mfcc_opts.use_energy = use_energy mfcc_opts.use_delta = use_delta mfcc = Mfcc(mfcc_opts) feats = mfcc.compute_features(signal, sample_rate) return feats # 计算CMVN统计量 def compute_cmvn_feats(feats): stats = compute_cmvn_stats(feats) feats_cmvn = feats.copy() feats_cmvn.add_row(-stats.mean_vec) feats_cmvn.scale_rows(1.0 / np.sqrt(stats.var_vec)) return feats_cmvn # 构建HMM拓扑结构 def build_hmm_topology(num_pdfs): topo = HmmTopology() topo.add_transition(0, 1, 0) for i in range(1, num_pdfs): topo.add_transition(i, i + 1, 0) topo.add_self_loop(1, 1) topo.set_final(num_pdfs, 0) return topo # 训练GMM模型 def train_gmm(data_rspecifier, num_gaussians, num_iterations, num_frames_per_batch): feats_rspec = f"ark,s,cs:apply-cmvn --norm-vars=false scp:{data_rspecifier} ark:- |" feats_reader = SequentialMatrixReader(feats_rspec) # 初始化GMM feats = feats_reader[0][1] dim = feats.shape[1] gmm = MakeAmDiagGmm(num_gaussians, dim, 1) # EM迭代 for i in range(num_iterations): sum_accs = gmm.AccumulateForUtterance(feats, 1.0) for j in range(1, feats_reader.num_rows()): utt, utt_feats = feats_reader[j] sum_accs.Add(gmm.AccumulateForUtterance(utt_feats, 1.0)) if (j + 1) % num_frames_per_batch == 0: gmm.Update(sum_accs, "m", True) sum_accs = gmm.ZeroAccs() if not sum_accs.IsZero(): gmm.Update(sum_accs, "m", True) return gmm # 解码 def decode(gmm, transducer, feats, word_symbols): decoder = LatticeFasterDecoder(transducer, 1.0, 0.0, True, 40.0, 30.0, 0.1, 0.1, True, True, True) decodable = DecodableMatrixScaled(DecodableInterface(gmm, feats), 1.0) # 解码 decoder.Decode(decodable) # 获取最佳路径 lattice = decoder.GetRawLattice() CompactLatticeWriter.Write("ark:| gzip -c > lat.gz", lattice) # 转录 with open("lat.gz", "rb") as f: for key, lat_str in kaldi_io.read_compress_archive(f): lat = CompactLattice() lat.ParseFromString(lat_str) best_path = kaldi.fst.shortestpath.shortestpath(lat).olabels words = [word_symbols.Find(sym).decode() for _, sym in best_path] print(key, " ".join(words)) if __name__ == '__main__': # 加载词典 word_symbols = SymbolTable.ReadText("words.txt") # 加载HMM拓扑 topo = ReadFstKaldiGeneric("topo") # 加载语言模型 graph = ReadFstKaldiGeneric("graph") # 加载数据 data_rspecifier = "scp:data.scp" # 提取MFCC特征 feats = extract_mfcc(signal, sample_rate, num_mel_bins=40, num_ceps=13) # 计算CMVN统计量 feats_cmvn = compute_cmvn_feats(feats) # 训练GMM gmm = train_gmm(data_rspecifier, num_gaussians=2048, num_iterations=10, num_frames_per_batch=10000) # 解码 decode(gmm, topo, feats_cmvn, graph, word_symbols) 该代码使用Kaldi工具包实现了一个基于GMM-HMM的自动语音识别系统,包括MFCC特征提取、CMVN归一化、GMM训练和解码等步骤。
在Python中,对于时域特征提取,你可以使用各种信号处理库和机器学习库来实现。以下是一些常用的库和方法: 1. Librosa:它是一个用于音频和音乐信号处理的流行库。你可以使用Librosa来提取各种时域特征,如时长、能量、过零率、音调等。 python import librosa # 加载音频文件 audio, sr = librosa.load('audio.wav') # 提取时长 duration = librosa.get_duration(audio, sr) # 提取能量 energy = librosa.feature.rms(audio) # 提取过零率 zero_crossing_rate = librosa.feature.zero_crossing_rate(audio) # 提取音调 pitches, magnitudes = librosa.piptrack(audio) # 其他特征提取方法请参考Librosa文档 2. Python_speech_features:这是一个专门用于语音信号处理的库。你可以使用它提取MFCC(Mel频率倒谱系数)等特征。 python from python_speech_features import mfcc # 提取MFCC特征 mfcc_features = mfcc(audio, sr) # 其他特征提取方法请参考Python_speech_features文档 3. SciPy:SciPy是一个强大的科学计算库,其中包含了丰富的信号处理函数。你可以使用SciPy来进行信号滤波、傅里叶变换等操作。 python from scipy import signal # 设计一个低通滤波器 b, a = signal.butter(4, 0.2, 'low') # 应用滤波器 filtered_audio = signal.lfilter(b, a, audio) # 进行傅里叶变换 spectrum = np.fft.fft(audio) # 其他信号处理操作请参考SciPy文档 这只是几个常用的库和方法,实际上还有很多其他的库和算法可以用于时域特征提取。具体使用哪个库和方法取决于你的需求和数据类型。
语音识别是指将语音信号转化为文本的过程。卷积神经网络(CNN)是一种强大的深度学习模型,已经在图像识别、语音识别和自然语言处理等领域取得了很大的成功。本文将介绍如何使用CNN实现语音识别,并提供详细的Python代码。 ## 数据准备 我们将使用Google提供的Speech Commands Dataset v0.02来训练我们的模型。该数据集包含约6,000个30个单词的语音命令。您可以从以下链接下载数据集: https://storage.cloud.google.com/download.tensorflow.org/data/speech_commands_v0.02.tar.gz 下载并解压缩数据集,您将获得一个名为“speech_commands_v0.02”的文件夹,其中包含所有语音命令的文件夹,以及一个包含标签的CSV文件。 我们将使用Python的Librosa库来读取和处理音频文件。如果您尚未安装该库,请使用以下命令进行安装: !pip install librosa ## 数据预处理 我们需要将音频文件转换为MFCC(Mel频率倒谱系数)特征。 MFCC是一种常用于语音识别的特征提取方法,它通过将音频信号转换为频域来捕获语音的重要信息。 以下是将音频文件转换为MFCC特征的Python代码: python import librosa import librosa.display import numpy as np def extract_features(file_path): # 读取音频文件 signal, sample_rate = librosa.load(file_path, sr=16000) # 提取MFCC特征 mfccs = librosa.feature.mfcc(signal, sample_rate, n_mfcc=40) # 压缩特征数据 mfccs = np.mean(mfccs.T, axis=0) return mfccs 我们可以使用以下代码来测试该函数: python file_path = 'speech_commands_v0.02/yes/0a7c2a8d_nohash_0.wav' features = extract_features(file_path) print(features.shape) 输出应该是: (40,) 这意味着我们已成功将音频文件转换为40维的MFCC特征。 接下来,我们需要为每个语音命令创建一个特征集和一个标签向量。以下是创建特征集和标签向量的Python代码: python import os def load_data(data_dir): # 用于存储特征和标签的列表 features = [] labels = [] # 遍历所有语音命令文件夹 for label, sub_dir in enumerate(os.listdir(data_dir)): sub_dir_path = os.path.join(data_dir, sub_dir) # 遍历所有音频文件 for file_name in os.listdir(sub_dir_path): file_path = os.path.join(sub_dir_path, file_name) # 提取MFCC特征 mfccs = extract_features(file_path) # 将特征和标签添加到列表中 features.append(mfccs) labels.append(label) return np.array(features), np.array(labels) 我们可以使用以下代码来加载数据: python data_dir = 'speech_commands_v0.02' features, labels = load_data(data_dir) print(features.shape, labels.shape) 输出应该是: (105829, 40) (105829,) 这意味着我们已经成功加载了数据,并且有105,829个样本和40个特征。 ## 划分数据集 我们需要将数据集划分为训练集、验证集和测试集。我们将使用80%的数据作为训练集,10%的数据作为验证集,10%的数据作为测试集。 以下是将数据集划分为训练集、验证集和测试集的Python代码: python from sklearn.model_selection import train_test_split # 划分数据集 X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.1, random_state=42) X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.1, random_state=42) print(X_train.shape, y_train.shape) print(X_val.shape, y_val.shape) print(X_test.shape, y_test.shape) 输出应该是: (85766, 40) (85766,) (9520, 40) (9520,) (10543, 40) (10543,) 这意味着我们已成功将数据集划分为训练集、验证集和测试集。 ## 构建CNN模型 现在,我们将使用Keras库构建CNN模型。以下是CNN模型的Python代码: python from keras.models import Sequential from keras.layers import Conv2D, MaxPooling2D, Dropout, Flatten, Dense # 创建CNN模型 model = Sequential() # 添加卷积层和池化层 model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(40, 98, 1))) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25)) model.add(Conv2D(64, kernel_size=(3, 3), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25)) model.add(Conv2D(128, kernel_size=(3, 3), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25)) # 将特征图展平为向量 model.add(Flatten()) # 添加全连接层和输出层 model.add(Dense(256, activation='relu')) model.add(Dropout(0.5)) model.add(Dense(30, activation='softmax')) # 编译模型 model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) print(model.summary()) 我们使用三个卷积层和池化层来提取特征,然后将特征图压缩为向量,并将其馈送到全连接层和输出层中。我们使用softmax作为输出层的激活函数,因为我们需要将模型的输出解释为概率。 ## 训练模型 现在我们已经准备好训练我们的模型了。我们将使用批量大小为32和100个时期来训练我们的模型。 以下是训练CNN模型的Python代码: python from keras.utils import np_utils # 将标签向量转换为独热编码 y_train = np_utils.to_categorical(y_train) y_val = np_utils.to_categorical(y_val) y_test = np_utils.to_categorical(y_test) # 将特征重塑为CNN所需的形状 X_train = X_train.reshape(X_train.shape[0], 40, 98, 1) X_val = X_val.reshape(X_val.shape[0], 40, 98, 1) X_test = X_test.reshape(X_test.shape[0], 40, 98, 1) # 训练模型 history = model.fit(X_train, y_train, batch_size=32, epochs=100, validation_data=(X_val, y_val)) ## 评估模型 现在我们已经训练了我们的模型,我们需要评估它的性能。我们将使用测试集来评估模型的性能。以下是评估模型的Python代码: python # 在测试集上评估模型 score = model.evaluate(X_test, y_test, verbose=0) print('Test loss:', score[0]) print('Test accuracy:', score[1]) ## 结论 在本文中,我们介绍了如何使用CNN实现语音识别,并提供了详细的Python代码。我们使用了Google的Speech Commands Dataset v0.02作为我们的数据集,并使用Keras库构建了CNN模型。我们将数据集划分为训练集、验证集和测试集,并使用批量大小为32和100个时期来训练模型。最后,我们在测试集上评估了模型的性能。
以下是一个基于MFCC特征提取、DTW算法的语音识别Python代码示例: python import numpy as np import scipy.io.wavfile as wav from python_speech_features import mfcc from scipy.spatial.distance import euclidean from fastdtw import fastdtw # 1. 数据准备和特征提取 # 设置录音参数 fs = 16000 # 采样率 duration = 1 # 录音时长(秒) # 读取录音文件 filename = 'input.wav' rate, voiceData = wav.read(filename) # 提取MFCC特征 mfccFeatures = mfcc(voiceData, samplerate=fs) # 2. 训练模型 # 准备训练数据和标签 trainingData = [] # 存储训练数据 trainingLabels = [] # 存储标签 # 添加0到9的训练数据和标签 for i in range(10): # 读取训练数据(假设已经准备好了对应的语音文件) filename = f'digit_{i}.wav' rate, trainingVoice = wav.read(filename) # 提取MFCC特征 trainingFeatures = mfcc(trainingVoice, samplerate=fs) # 添加到训练数据和标签中 trainingData.extend(trainingFeatures) trainingLabels.extend([i] * len(trainingFeatures)) # 转换为NumPy数组 trainingData = np.array(trainingData) trainingLabels = np.array(trainingLabels) # 3. 识别输入语音 # 使用DTW算法计算距离和路径 distances = [] for i in range(10): # 获取当前数字的模型特征 filename = f'digit_{i}.wav' rate, digitVoice = wav.read(filename) digitFeatures = mfcc(digitVoice, samplerate=fs) # 计算DTW距离和路径 distance, _ = fastdtw(mfccFeatures, digitFeatures, dist=euclidean) distances.append(distance) # 找到最小距离对应的数字 recognizedDigit = np.argmin(distances) # 显示识别结果 print(f"识别结果:{recognizedDigit}") 请确保已安装所需的库,例如scipy、numpy、python_speech_features和fastdtw。此示例使用了wav库来读取和写入音频文件。你需要将录制的语音文件命名为input.wav,并准备好0到9的训练数据文件,命名为digit_0.wav到digit_9.wav。该代码示例使用了MFCC特征提取和DTW算法来计算输入语音与训练数据之间的距离,并找到最匹配的数字作为识别结果。

最新推荐

基于51单片机的usb键盘设计与实现(1).doc

基于51单片机的usb键盘设计与实现(1).doc

"海洋环境知识提取与表示:专用导航应用体系结构建模"

对海洋环境知识提取和表示的贡献引用此版本:迪厄多娜·察查。对海洋环境知识提取和表示的贡献:提出了一个专门用于导航应用的体系结构。建模和模拟。西布列塔尼大学-布雷斯特,2014年。法语。NNT:2014BRES0118。电话:02148222HAL ID:电话:02148222https://theses.hal.science/tel-02148222提交日期:2019年HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire论文/西布列塔尼大学由布列塔尼欧洲大学盖章要获得标题西布列塔尼大学博士(博士)专业:计算机科学海洋科学博士学院对海洋环境知识的提取和表示的贡献体系结构的建议专用于应用程序导航。提交人迪厄多内·察察在联合研究单位编制(EA编号3634)海军学院

react中antd组件库里有个 rangepicker 我需要默认显示的当前月1号到最后一号的数据 要求选择不同月的时候 开始时间为一号 结束时间为选定的那个月的最后一号

你可以使用 RangePicker 的 defaultValue 属性来设置默认值。具体来说,你可以使用 moment.js 库来获取当前月份和最后一天的日期,然后将它们设置为 RangePicker 的 defaultValue。当用户选择不同的月份时,你可以在 onChange 回调中获取用户选择的月份,然后使用 moment.js 计算出该月份的第一天和最后一天,更新 RangePicker 的 value 属性。 以下是示例代码: ```jsx import { useState } from 'react'; import { DatePicker } from 'antd';

基于plc的楼宇恒压供水系统学位论文.doc

基于plc的楼宇恒压供水系统学位论文.doc

"用于对齐和识别的3D模型计算机视觉与模式识别"

表示用于对齐和识别的3D模型马蒂厄·奥布里引用此版本:马蒂厄·奥布里表示用于对齐和识别的3D模型计算机视觉与模式识别[cs.CV].巴黎高等师范学校,2015年。英语NNT:2015ENSU0006。电话:01160300v2HAL Id:tel-01160300https://theses.hal.science/tel-01160300v22018年4月11日提交HAL是一个多学科的开放获取档案馆,用于存放和传播科学研究文件,无论它们是否已这些文件可能来自法国或国外的教学和研究机构,或来自公共或私人研究中心。L’archive ouverte pluridisciplinaire博士之路博士之路博士之路在获得等级时,DOCTEURDE L'ÉCOLE NORMALE SUPERIEURE博士学校ED 386:巴黎中心数学科学Discipline ou spécialité:InformatiquePrésentée et soutenue par:马蒂厄·奥布里le8 may 2015滴度表示用于对齐和识别的Unité derechercheThèse dirigée par陪审团成员équipe WILLOW(CNRS/ENS/INRIA UMR 8548)慕尼黑工业大学(TU Munich�

valueError: Pandas data cast to numpy dtype of object. Check input data with np.asarray(data).

这个错误通常发生在使用 Pandas DataFrame 时,其中包含了一些不能被转换为数字类型的数据。 解决方法是使用 `pd.to_numeric()` 函数将数据转换为数字类型。例如: ```python import pandas as pd import numpy as np # 创建一个包含字符串和数字的 DataFrame df = pd.DataFrame({'A': ['a', 'b', 'c'], 'B': [1, 2, '3']}) # 尝试将整个 DataFrame 转换为数字类型会报错 np.asarray(df, dtype=np.float) # 使

基于VC--的五子棋程序设计与实现毕业设计.doc

基于VC--的五子棋程序设计与实现毕业设计.doc

体系结构驱动的普遍性应用程序中

体系结构驱动的普遍性应用程序的自主适应艾蒂安·甘德里勒引用此版本:艾蒂安·甘德里勒。由体系结构驱动的普遍性应用程序的自主适应。无处不在的计算。格勒诺布尔大学,2014年。法语。NNT:2014GRENM078。电话:01215004HAL ID:电话:01215004https://theses.hal.science/tel-01215004提交日期:2015年HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire论文要获得的等级格勒诺布尔大学博士专业:计算机科学部长令:2006年提交人艾蒂安·G·安德里尔论文由Philippe LAlanda指导由Stephanie CHollet共同指导在格勒诺布尔计算机科学实验室编写数学、信息科学与技术、计算机科学博士体系结构驱动的普遍性应用程序的自主适应论文�

STM32F103 RCT6 LCD显示正弦波并且设置可以调节振幅的触摸按键代码

以下是基于STM32F103RCT6和Keil MDK-ARM开发环境的LCD显示正弦波并且设置可以调节振幅的触摸按键代码: ```c #include "stm32f10x.h" #include "lcd.h" //LCD驱动库 #include "math.h" //数学库 #define PI 3.14159 //圆周率 void delay_ms(uint16_t n); int main(void) { float amplitude = 20; //振幅 float frequency = 1; //频率 float phase = 0; //相位

我国软件和信息技术服务业的发展现状及存在的问题.pdf

我国软件和信息技术服务业的发展现状及存在的问题.pdf