- 博客(113)
- 收藏
- 关注
原创 wav文件头
// 这里得到可播放的音频文件 private void copyWaveFile(String inFilename, String outFilename) { FileInputStream in = null; FileOutputStream out = null; long totalAudioLen = 0; long totalDataLen = totalAudioLen + 36; long lo
2022-04-19 09:37:40
569
原创 pytorch inplace operation
+=add_第三种情况,对变量切片操作后赋值给原来的参数!!!!x[:,:,0] = x[:,:,0] * b
2022-03-10 18:47:18
189
原创 python -- resize / reshape
resize会对原值进行修改并且返回是None,reshape不会对原值进行修改,返回是修改后结果
2022-03-02 17:03:41
416
原创 【无标题】
实车测试:1、定位B105-0104 daily版本测试时替换so后无法唤醒问题,拉取音频文件大小正确但幅值为0,替换回原包的so无法恢复。原因是该版本存在问题,每次替换so后需要下电、锁车、拔掉电瓶然后重新上电语音才正常。2、B105daily版本测试,完成回声场景50%音量,4x1x10识别测试;主驾、副驾2x9x10识别测试;目标主驾、副驾 的误闯2x3x9x10测试;4x9x10唤醒定位测试3、B105标准版本模型训练1、整理分析适配cbu14前端的34个模型(含中间模型),从指标及波形和
2022-01-09 23:17:27
1099
原创 获取ckpt中的变量,并打印变量值
with graph.as_default(): reader = tf.pywrap_tensorflow.NewCheckpointReader(ckpt_path) var_to_shape_map = reader.get_variable_to_shape_map() # 获取变量名 for key in var_to_shape_map: print("tensor_name: ", key) value = reader.get_ten
2021-10-22 17:37:18
228
原创 tf1加载tf2权重流程:
tf1加载tf2权重流程:1、获取到变量:var=get_variables(var_name) 或者tf.get_collection_ref(tf.GraphKeys.GLOBAL_VARIABLES)]2、变量赋值 : a=tf.assign(var,value) 或者 a=var.assign(value)3、变量赋值生效: sess.run(a)
2021-10-22 17:26:15
283
原创 tensorflow打印checkpoint里的变量名称和值
reader = tf.pywrap_tensorflow.NewCheckpointReader(ckpt_path)var_to_shape_map = reader.get_variable_to_shape_map()for key in var_to_shape_map:print("tensor_name: ", key)value=reader.get_tensor(key)if isinstance(value, np.ndarray):print(‘value:’,np.sha
2021-10-21 21:55:00
228
原创 ascii can‘t xxx
错误提示:ascii can’t xxxf=open()f_l=f.readlines()对f_l中的文本操作时,输出ascii can’t xxx调试过程:open加encoding参数无效{ open(xxx,encoding=‘utf-8’)};python文件首行指定编码方式无效;打印系统的编码方式显示为ascii;解决办法,对文本内容使用encode()函数进行编码!!!print(xx.encode('utf-8'))...
2021-07-29 22:12:13
115
原创 python--文件操作r r+, w w+, a a+
r只读,r+读写,不创建w新建只写,w+新建读写,二者都会将文件内容清零 (以w方式打开,不能读出。w+可读写)w+与r+区别: r+:可读可写,若文件不存在,报错;w+: 可读可写,若文件不存在,创建以a,a+的方式打开文件,附加方式打开 (a:附加写方式打开,不可读;a+: 附加读写方式打开)...
2021-06-22 16:22:59
182
原创 python -- decimal规则
Decimal中舍入规则大致有以下几种类型,做简单介绍一下:1)ROUND_UP:舍弃小数部分非0时,在前面增加数字,如 5.21 -> 5.3;永远进位2)ROUND_DOWN:舍弃小数部分,从不在前面数字做增加操作,如5.21->5.2;永远舍3)ROUND_CEILING:如果Decimal为正,则做ROUND_UP操作;如果Decimal为负,则做ROUND_DOWN操作;趋向正无穷4)ROUND_FLOOR:如果Decimal为负,则做ROUND_UP操作;如果Decimal为
2021-06-22 16:00:43
325
原创 python numpy -- tofile,fromfile,save,load
一,tofile()和fromfile()tofile()将数组中的数据以二进制格式写进文件,不保存数组形状和元素类型等信息fromfile()读入如数据,在读入数据时需要正确设置dtype参数,并reshape才能得到和原始数据一致的结果f='xxx.fea'arr1.astype('float').tofile(f)arr2=np.fromfile(f, dtype='float') #必须设置dtype且和保存时一致,否则结果错误二、save,load是NumPy专用的二进制格式保存数
2021-06-19 10:46:17
3574
原创 python 通过布尔索引确定 True or False,替换0
a 是 numpy矩阵:a[a==0] = eps #将a中的0替换为eps值a[a<-1] = -1 #将a中小于-1的值替换为1使用where替换待补充。。。
2021-06-05 16:34:46
471
原创 tmux+conda环境配置不对问题解决
需要退出虚拟变量,conda deactivate # 退出虚拟环境,然后重新进入,conda activate env_name 否则tmux窗口下的环境不对
2021-05-20 23:10:52
3122
2
原创 给定表达式树的后续遍历,求表达式的值
class Solution: def calc_(self, expression): # 在此添加你的代码 res_final = expression.split(',') while (len(res_final) > 2): print(res_final) res = [] for i in range(len(res_final)): ...
2021-05-19 22:04:08
162
原创 python -- 等号复制,浅复制,深复制
等号复制,浅复制,深复制b = a, a修改可变数据类型 或 不可变数据类型, b都会和a保持一致b = a.copy() a修改可变数据类型,b会跟着修改; a修改不可变数据类型,b不变b = a.deepcopy() a修改可变数据类型 或 不可变数据类型, b都保持不变...
2021-03-29 21:10:09
801
1
原创 wav_norm
find peak of wav (abs peak)tmp= pow(10, -3.0 / 20) * (pow(2.0, 15) - 1); // //pow(10, -3.0 / 20) = 0.70794: scale 0.5 (-3db), 15 bits quantization, max value is (pow(2,15)-1)或者使用sart(2)/2* (pow(2.0, 15) - 1);scale * (wav[i] / max(abs_peak)) //norm pea.
2021-03-27 17:37:41
80
原创 fftconvlove 与 convlove 的区别; 参数{‘full’, ‘valid’, ‘same’}的设置
一、fftconvlove 与 convlove 的区别:fftconvolve 先做FFT,然后在频域相乘再转换为时域。 当序列较长时,可以利用FFT减少计算量加快运算速度。convolve 直接在时域进行卷积fftconvolve using the fast Fourier transform method. fftconvolve is generally much faster than convolve for large arrays (n > ~500), but can be
2021-03-12 10:41:56
1443
原创 C++ 中的 char* 与 string
char* 与 stringstring是一个容器,c++中封装了一个string类,char*则是一个指针,指向一个数组的首地址。string的内存管理是由系统处理,除非系统内存池用完,不然不会出现这种内存问题。char *的内存管理由用户自己处理,很容易出现内存不足的问题尽量使用 string 而不用 char* 。二者的转换: char*向string转换支持隐式类型转换,即: char* c[ ] = {1,2,3}; string p = c ; 而string转cha
2021-03-06 17:51:15
746
1
原创 python 静态函数 static_method
函数语法staticmethod(function)静态函数声明格式:class C(object): @staticmethod def f(arg1, arg2, ...):以上实例声明了静态方法 f,从而可以实现实例化使用 C().f(),当然也可以不实例化调用该方法 C.f()。例#!/usr/bin/python# -*- coding: UTF-8 -*- class C(object): @staticmethod def f():
2021-03-05 20:33:05
359
原创 C++ 智能指针 std::unique_ptr, std::shared_ptr
为了更容易(同时也更安全)地使用动态内存,C++11标准库提供了两种智能指针(smartpointer)类型来管理动态对象:std::unique_ptr, std::shared_ptr。shared_ptr允许多个指针指向同一个对象;unique_ptr则"独占"所指向的对象。C++11标准库还定义了一个名为weak_ptr的辅助类,它是一种弱引用,指向shared_ptr所管理的对象。这三种类型都定义在memory头文件中。智能指针的行为类似常规指针,重要的区别是它负责自动释放所指的对象。智能指
2021-03-03 10:33:58
535
原创 c文件中的 extern “C“
c文件中的 extern “C”由于编译器对 C++ 和 C语言的函数名处理不同,在C++ 中调用 C 代码时, 需要在 C 代码中加上extern “C”, 用来告诉编译器这部分代码按C语言编译。C++支持重载,编译时会将参数类型也加到编译后的代码中,而C不支持重载,编译函数时一般只包含函数名,不会带上函数的参数类型。为了实现代码的复用,因此加上 extern “C”, 来兼容 C++ 中调用的C代码。需要注意, 不可以将extern “C” 添加在函数内部;如果函数有多个声明,可以都加exte
2021-03-02 11:13:36
173
原创 植入tflite源码,需要改动的内容
植入tflite源码,需要改动的内容: 1、修改interpreter.h , 改结构体Subgraph 为需要替换的名字, 删除声明TfLiteStatus Invoke(); 增加新的定义,为防止调用出错,将函数名改为TfLiteStatus Invoke_x() {},代码为interpreter中相应函数代码的移植 2、修改 将sugbraph.h 添加subgrap.h移动到工程目录,并重命名为 sugbraphx.h 修改结构体名称 Subgrap 为 Subgrapx, 可
2021-03-01 10:06:49
252
原创 Kaldi MFCC参数详解
MFCC的过程:预加重、加窗、DFT变换、梅尔滤波、DCT变换。此外在使用中还会对提取的MFCC参数进行 cmvn 变换和 vad 截取。MFCC过程使用的参数:参数的设置在单个结构体中:MfccOptions、FrameExtractionOptions、FbankOptions,分别位于三个头文件中:feature-mfcc.h, feature-window.h, feature-fbank.h。truct MfccOptions { FrameExtractionOptions fr
2021-02-26 17:38:09
821
原创 int *p(int); 和int (*p)(int)
int *p(int);p(int) 说明p为函数,返回值为 int类型的指针 (指向int的指针)。int (*p)(int);(*p)说明 p 为指针,(*p)() 说明该指针指向函数, 函数的返回值为int
2021-02-21 01:59:35
531
原创 对数组名不要取地址,对数组名不要进行++操作
1、对数组名不要取地址2、数组名代表数组的地址,也代表第一个元素的地址,但是不能对此地址进行++操作,如需使用指针访问,需重新定义一个指针,使其指向该数组,然后通过*(p++)依次访问数组中的值。 int a[3]={1,2,3}; for (int i=0;i<3;i++) { prinf("%d",*(a++); //错误,正确方法如下: } int *p; //重新定义一个指针,使其指向数组的首地址 p=a; for (int i=0;i<3;i++) {
2021-02-03 19:40:40
1971
原创 Kaldi 训练的模型转 tensorflow中的pb格式
分为两步:1、将kaldi模型转为onnx格式,使用工具Kaldi-ONNX Converter:https://github.com/XiaoMi/kaldi-onnx2、将ONNX格式转为TensorFlow中的pb格式,使用工具onnx-tensorflow:https://github.com/onnx/onnx-tensorflow
2021-02-01 14:29:01
272
原创 函数声明时 要不要 加 extern
待补充。。。1、通常做法–在.c中定义,在.h中extern出来,那么其他编译单元include这个.h文件就可以使用这个变量。2、函数如果定义在本.c文件中,或者定义在一个.h文件中并且本.c文件#include了这个.h就不用加extern,因为这两种情况下本.c文件都可以直接找到一旦有一个函数定义在另一个.c文件中,而你要想在本.c文件中使用的时候就必须用extern关健字声明一下,否则链接会出错。3、此外,函数申明默认就是extern的,所以函数声明前的extern可以省略不加。...
2021-01-23 17:48:51
6388
原创 #define 带参数的宏定义
#define SUM(a,b) a+b#define square(x) ((x) * (x))#define LOG_ERR(tag, str) printf(tag+str)
2021-01-23 17:29:49
278
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人