小编Ric*_*Bou的帖子

在python中更改wav文件的音量

我有一个2秒16位单通道8khz wav文件,我需要改变它的音量.

这应该是非常简单的,因为改变音量与改变信号的幅度是一样的,我只需要对它进行衰减,即将它乘以0到1之间的数字.但它不起作用:新的声音较低,但非常充满噪音.我究竟做错了什么?

这是我的代码:

import wave, numpy, struct

# Open
w = wave.open("input.wav","rb")
p = w.getparams()
f = p[3] # number of frames
s = w.readframes(f)
w.close()

# Edit
s = numpy.fromstring(s, numpy.int16) * 5 / 10  # half amplitude
s = struct.pack('h'*len(s), *s)

# Save
w = wave.open("output.wav","wb")
w.setparams(p)
w.writeframes(s)
w.close()
Run Code Online (Sandbox Code Playgroud)

感谢你们!

python audio volume wav wave

11
推荐指数
3
解决办法
1万
查看次数

我退出()一个脚本,但它不会退出

我尝试退出脚本但它没有退出.

这是我的代码:

import sys

try:
    ...
    print "I'm gonna die!"
    sys.exit()
except:
    ...

print 'Still alive!'
Run Code Online (Sandbox Code Playgroud)

结果是:

I'm gonna die!
Still alive!
Run Code Online (Sandbox Code Playgroud)

为什么?

python

4
推荐指数
1
解决办法
207
查看次数

使用宏检查宏名称的预先存在

我编写了一个包含几个包含数十个宏的头文件(.h).在每个宏之前我编写了这个:

#if defined (MACRO_NAME)
#warning "Macro name MACRO_NAME is already in use. Please rename the macro"
#endif
Run Code Online (Sandbox Code Playgroud)

为了提高代码的可读性,有一个宏可以完成所有检查工作,这将是很棒的,但宏内部不允许使用指令.

我想要这样的东西:

#define CHECK_MACRO_NAME(MACRO_NAME) \
    #if defined (MACRO_NAME) \
    #warning "Macro name "MACRO_NAME" is already in use. Please rename the macro" \
    #endif
Run Code Online (Sandbox Code Playgroud)

你知道其他(更好)的方式吗?

c macros directive c-preprocessor

2
推荐指数
1
解决办法
116
查看次数

标签 统计

python ×2

audio ×1

c ×1

c-preprocessor ×1

directive ×1

macros ×1

volume ×1

wav ×1

wave ×1