作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要从wav的音频数据中间提取大约8秒。长度为0:27秒的文件。
-我所做的一切,花了9秒钟的中间时间由wav分割。文件分为3部分,取中间部分,但9s我需要8s。
以及如何在该numpy数组中找到个位数?
import scipy.io.wavfile
import pyaudio
import numpy as np
(samplRate,data)=scipy.io.wavfile.read('Track48.wav')
print
CHANNELS=2
p= pyaudio.PyAudio()
#
nine_sec=len(data)/3
eight_sec=2*len(data)/3
stream = p.open(format=pyaudio.paInt16,
channels=CHANNELS,
rate=44100,
output=True
)
cuted_data=data[nine_sec:eight_sec]
newdata = cuted_data.astype(np.int16).tostring()
stream.write(newdata)
print(cuted_data)
最佳答案
您可以使用pydub
非常轻松地将中间的8秒 slice 。
pydub are here的详细信息
您可以安装为pip install pydub
我有一个348秒持续时间的wav文件,其中间8秒被切成薄片。
>>> song.duration_seconds
348.05551020408166
wav
,
mp3
,
m4a
,
ogg
等进行导入(转换为数据段)和导出。
from pydub import AudioSegment
from pydub.playback import play
song = AudioSegment.from_wav("music.wav")
#slice middle eight seconds of audio
midpoint = song.duration_seconds // 2
left_four_seconds = (midpoint - 4) * 1000 #pydub workds in milliseconds
right_four_seconds = (midpoint + 4) * 1000 #pydub workds in milliseconds
eight_sec_slice = song[left_four_seconds:right_four_seconds ]
#Play slice
play(eight_sec_slice )
#or save to file
eight_sec_slice.export("eight_sec_slice.wav", format="wav")
>>> eight_sec_slice.duration_seconds
8.0
关于python - 如何从wav取得中间时间范围。 python ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46899930/
我是一名优秀的程序员,十分优秀!