V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  SystemLight  ›  全部回复第 4 页 / 共 5 页
回复总数  83
1  2  3  4  5  
@thedrwu 感觉好像是离目标越来越远了,哈哈,我其实呢想实现这个图片效果,https://www.buzzsprout.com/player/wave/10,看这个最高的高度是 60,我的想法就是把分贝固定到 0 到 60 分贝这个范围,然后对整个音频的帧均匀抽样出 200 个片段,然后根据这个片段中每个的振幅值算出对应的分贝大小,决定每个小块的大小,这样的思路是否合理正确呢,求指点。
@liuzhedash 诶,有点糊涂了,第一个文章里面提到:如果将声音采样大小增加一倍到 16bit,产生的动态范围则为 96 分贝,计算公式如下:
dB = 20 * log(65536)

他在 16 位的 sample width 用的不就是 65536 么
@thedrwu 基准线是因为采样的数值为 0 时,得到的分贝是负无穷,而基准线两边就是分别代表采样的振幅值的正负换算过来的分贝值是吧。
@jagger2048 实际上公式是 10 * log_10((sample/32767)^2) 对吧
@liuzhedash 对对对,我现在不清楚的是这个数据定义本身是有符号的还是无符号的呢,因为我自己转的时候,2 个字节么,我可以转成有符号,也可以转无符号,但是这个真实情况下是不是有符号还是无符号就不清楚了。
@Accelerant 那音频数据每一个 sample 的大小是有符号的还是无符号的呢,音频数据有正负方向的说法么
@msg7086 我的音频数据的位深是 2 字节的,我取数据时候是不是用无符号的 16 位整型去取就行了啊,我现在用的是有符号的整型,会出现负值,但是不清楚这个 2 字节的 sample 表示的大小到底是不是有符号的
@byaiu 但是我这样转换,数组大小却变了
@junkun 是的是的,明白了

@minami 还真是,感谢启发,我输出值以后从 np.short 类型转成了 python int 类型,所以最高位变了,符号位置也就变了

python_val = -32769

print(bin(python_val)) # 符号位+中间数字+已有的 16 位数字位 -0b1000000000000001 存成补码 1...1...0111111111111111

print(python_val)

numpy_short_val = np.short(python_val) # numpy 得到以后把只取 16 位,发现最高位是 0 为正数,正数原码=补码 0111111111111111

print(bin(numpy_short_val)) # 当 python 再读取出来时:0111111111111111 就是 32767

print(numpy_short_val)
# 回复自己的一点理解

c = 0b01
b = -0b11

# python 获取整型占用大小,可以使用 sys.getsizeof(num)
# 原码是人看到的,补码是计算机看到的
# c 的补码 0...001 ...代表省略的符号位,根据 int 大小值来的,我假设是 8 位的 int 大小,写全就是 00000001 这是补码,正数补码就是这个数的原码
# b 的补码 1...101 ...代表省略的符号位,根据 int 大小值来的,我假设是 8 位的 int 大小,写全就是 11111101 这是补码,
# 负数补码变原码,除了符号位其它位需要先按位取反再加一,就是这个数的原码。(先取反)10000010 (再加 1)10000011
# c 的原码 00000001
# b 的原码 10000011(最高位是符号位 0 是正数,1 是负数)

# c 异或 b 实际上是补码在做运算,用我们假设的 8 位内存大小的整型演示
# c: 00000001
# b: 11111101
# 结果:11111100 结果的补码就得到了,但是我们人看的时候计算机会转成源码,转原码先取反,符号位不动 10000011,再加一,10000100
# 得到负的一个 0000100 数字,前面 0 省略掉,就是-0b100,用 python 运行看一下结果是不是这样

print(bin(c ^ b))
2020-04-30 11:26:18 +08:00
回复了 SystemLight 创建的主题 Python 通过 Python 或者 js 有什么方法可以生成音频的波形图?
@zhw2590582 哈哈,您可能理解错了,可能我表达的不是很准确,我其实想知道的是这个纵轴的数据是不是代表的音频当前时间点的信号强度,这个应该是时域下的表现吧,时域到频域下,通过傅里叶变换,横轴变为不同的频率,纵轴代表振幅,而实际上还有一条 z 轴是代表当前时间点吧。
2020-04-29 19:11:07 +08:00
回复了 SystemLight 创建的主题 Python 通过 Python 或者 js 有什么方法可以生成音频的波形图?
@zhw2590582 请问下横轴是时间,纵轴代表的是什么,水平的分割线是分割的左右声道么?
@baocaixiong 还真是,不过我真的第一次发现查询也需要 commit,原来以为只要插入 commit 就可以了
@sujin190 已解决,查到您以前的评论说过这个问题
理解了,一开始我考虑错了,想的是对部分取反操作,也就是 二进制 11 取反后是 00, 符号取反,忽略了整型实际内存占用大小。
2020-03-27 15:35:31 +08:00
回复了 SystemLight 创建的主题 程序员 关于 QQ 中点击文件后选择文件打开方式该如何去实现?
实际上调用包名 android.intent.action.VIEW 就可以让文件被选择打开方式的程序捕获,进而选择文件打开方式
其它常用包名参考这篇文章
https://blog.csdn.net/u010687392/article/details/43899133
2020-03-27 15:34:17 +08:00
回复了 SystemLight 创建的主题 程序员 关于 QQ 中点击文件后选择文件打开方式该如何去实现?
@geelaw 很有启发,不过我先实现的是安卓的调用,已经找到方法了,感谢
2020-03-18 12:26:25 +08:00
回复了 SystemLight 创建的主题 程序员 易企秀制作的内容不能直接下载部署到自己服务器上么?
@surfire91 就是通过易企秀制作的 h5 可以直接放到自己服务器上面,但是怎么下载呢
2020-03-09 20:00:24 +08:00
回复了 shiwoya 创建的主题 Vue.js 请问大家哪有 node+vue 的整套的教程?
@shiwoya 找网站仿写了,有什么技术问题搜索引擎基本都可以解决
2020-03-08 14:15:53 +08:00
回复了 shiwoya 创建的主题 Vue.js 请问大家哪有 node+vue 的整套的教程?
你指的从零是从哪里啊,原生 web 学好了么,学好的话买两本关于 vue 和 node 的书看看就好了,大部分知识官方文档写的很清楚了
1  2  3  4  5  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3432 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 20ms · UTC 11:05 · PVG 19:05 · LAX 04:05 · JFK 07:05
Developed with CodeLauncher
♥ Do have faith in what you're doing.