平时经常做音频算法,经常用得到wav转txt的转换,这里就做个备忘,自己写了一些小代码来实现这个目标:

第一个是c代码的实现:

 #include <stdio.h>
#include <stdlib.h>
#include <math.h> #define W 128 int FileSet = ;
int FileEnd = ;
int FileLength = ;
short InputData[W];
void buf_txt(short *buf,int len,FILE*ttt)
{
for(int i=; i < len; i++)
{
fprintf(ttt, ",%d",buf[i]);
if(i % == )
{
fprintf(ttt, "\n");
}
}
} int main(int argc, char** argv)
{ FILE *Ifp,*ttt; if(argc != )
{
printf("usage:./wav2txt XX.wav EEE.txt\n\t");
return ;
} Ifp = fopen(argv[],"rb"); ttt = fopen(argv[],"w"); fseek(Ifp,0L,SEEK_END);
FileEnd=ftell(Ifp);
rewind(Ifp);
FileLength = FileEnd/; while(FileLength >= W)
{
fread(InputData,sizeof(short),W,Ifp);
buf_txt(InputData,W,ttt);
FileLength -= W; } fread(InputData,sizeof(short),FileLength,Ifp); buf_txt(InputData,FileLength,ttt); return ;
}
~

第二个是python的代码:

 # -*- coding: utf-8 -*-
import wave
import matplotlib.pyplot as plt
import numpy as np
import sys f = wave.open(sys.argv[1], 'rb' )
params = f.getparams()
nchannels, sampwidth, framerate, nframes = params[:4] np.set_printoptions(threshold='nan') Data_str = f.readframes(nframes)
Data_num = np.fromstring(Data_str,dtype=np.int16)
print(Data_num)
print(nframes) #np.savetxt("test.txt",Data_num) fw =file(sys.argv[2],"w")
fw.write(str(list(Data_num)))
fw.close() f.close()

python和c代码放在一起的时候,才会发现,它是多么的简洁,看来以后要经常使用了。把python作为一个重点使用的语言来重视起来。

备忘问题:

1 一个数组无穷大,numpy在输出时会自动省略中间部分而只打印部分。

  解决方法:使用numpy.set_printoptions(threshold='nan')

2 Python中list里面的元素没有以逗号为分割,而是以空格为分割:

 解决方法:基础知识不够牢固,list中元素是以逗号做分割的,matrix中是以空格为分割的,强转即可。

参考文档:

1 https://www.cnblogs.com/dupuleng/articles/5028291.html

2 https://blog.csdn.net/bowean/article/details/80868965

wav转txt格式的代码实现(c,python)的更多相关文章

  1. mfc 导出数据保存成excel和txt格式

    最近做了一些东西,项目到了收尾的工作.不过这次我没有参与到控件机器的功能的那一部分,都是主管自己写的.不过,所有的控件重写都是由我来做的.还有数据库这一方面是我和主管共同完成的.不过还不错,主管写一部 ...

  2. 【转】java将excel文件转换成txt格式文件

    在实际应用中,我们难免会遇到解析excel文件入库事情,有时候为了方便,需要将excel文件转成txt格式文件.下面代码里面提供对xls.xlsx两种格式的excel文件解析,并写入到一个新的txt文 ...

  3. python读取与写入csv,txt格式文件

    python读取与写入csv,txt格式文件 在数据分析中经常需要从csv格式的文件中存取数据以及将数据写书到csv文件中.将csv文件中的数据直接读取为dict类型和DataFrame是非常方便也很 ...

  4. 把txt格式数据制作成xml数据

    txt格式数据: 代码: s1=""" <object> <name>{0}</name> <pose>Unspecifi ...

  5. 利用kindlegen实现txt格式小说转换为mobi格式小说(C++实现)

    一直以来喜欢在kindle上看小说,kindle不伤眼,也可以帮助控制玩手机的时间.但在kindle上看txt格式的网络小说就很头疼了,这类小说在kindle上是没有目录的,而且篇幅巨长.所以一直以来 ...

  6. Txt格式配置表无法解析的问题——BOM

    今天再次遇到同一个问题:策划给来一个Txt格式配置表,我用解析类去读取,返回的结果为空.解析类参数是:主键key,文件名fileName,错误提示errorTip. 写读取语句的时候,主键key我是直 ...

  7. 将搜狗词库.scel格式转化为.txt格式

    由于项目中要用到词库,而下载的搜狗词库是.scel格式,所以就用python脚本将搜狗词库.scel格式文件转化为.txt格式文件. #!/bin/python # -*- coding: utf-8 ...

  8. 琐碎--选择文件夹(路径)+生产txt格式的log+数据库操作方式

    记录日常工作常用到的一些方法: 1 选择文件操作,并将文件的路径记录下来: OpenFileDialog ofd = new OpenFileDialog(); ofd.Multiselect = f ...

  9. 使用gfortran将数据写成Grads格式的代码示例

    使用gfortran将数据写成Grads格式的代码示例: !-----'Fortran4Grads.f90' program Fortran4Grads implicit none integer,p ...

随机推荐

  1. JAVA课程设计-教学论坛系统

    团队课程设计博客 1. 团队名称:教学论坛系统设计团队 团队成员介绍: 郑佳亮(组长):201721123022,查看帖子,点赞,参与度,搜索,管理员删帖的后端,点赞,参与度前端 李于程(组员):20 ...

  2. [规则原则定理]规则原则定理章4 HTTP&RPC

    rpc是远端过程调用,其调用协议通常包含传输协议和序列化协议. 传输协议包含: 如著名的 [gRPC](grpc / grpc.io) 使用的 http2 协议,也有如dubbo一类的自定义报文的tc ...

  3. 4-2 requests库使用

    打开自己的编辑器 创建一个py文件 这里是首先调用requests库 调用requests  最后打印出response

  4. node vue 项目部署问题汇总

    场景:vue-router为history模式,不带项目名访问的部署,如果资源是用相对路径加载,则资源匹配路径不对 一.带项目名称访问,如部署到tomcat服务上 webpack:  build/ut ...

  5. 搭建一个webpack微服务器

    [前言]:因为最近在vue2.0的时候用到了webpack的externals,才发现我之前都只是用webpack做一些搭建完项目后的“收尾工作”——即打包,而没有把它纳入到项目开发的“主体过程”中来 ...

  6. pycharm:terminal中显示乱码的解决方式

    pycharm:terminal中显示乱码的解决方式

  7. Lucene实现自己的英文空格小写分词器

    看一下继承图,Tokenizer和TokenFilter都是继承于TokenStream,TokenStream继承了AttributeSource package com.lucene.demo.a ...

  8. Ubuntu16.04 安装Tensorflow1.7过程记录二:安装CUDA及Tensorflow

    参考 How to install Tensorflow 1.7.0 using official pip package 其中的CUDNN应该改为7.05for CUDA9.0 后面安装的spyde ...

  9. 关于numpy.maximum函数的测试

    atr.py import numpy as np a = np.arange(9)print("a:",a)print(a[0:3])print(a[3:6])print(a[6 ...

  10. ELK的高级篇(测试记录各种日志)

    一.elk架构已经完成情况情况下  访问限制: 加个x-pack插件  1)一个脚本收集多个日志,if 判断写入es的索引 [root@k8s6 conf.d]# cat file.conf inpu ...