使用mac上的终端,我输出一个连续的声源,以0. 3秒为增量,其频率是桌面上csv文件中写的值,但输出的音频文件中没有声音。我在Audacity中查看了波形,没有记录任何内容,因此在播放设备上似乎没有问题。
Python中的源代码如下:
pip install numpy scipy pydub pandas
import numpy as np
from scipy.io.wavfile import write
import pandas as pd
from pydub import AudioSegment
# Path of the CSV file
csv_path = '/Users/username/Desktop/filename.csv'
# Read the CSV file
data = pd.read_csv(csv_path)
# Extract the columns of values
values = data['column name'].values.
# Set sampling rate and time
sample_rate = 44100 # Sampling rate (Hz)
duration = 0.3 # Length of each sound (seconds)
# Audio generation
audio = AudioSegment.empty()
for value in values:.
frequency = float(value)
t = np.linspace(0, duration, int(duration * sample_rate), endpoint=False)
waveform = np.sin(2 * np.pi * frequency * t)
audio += AudioSegment(
waveform.astype(np.int16).tobytes(), sample_width=2, channels=1, frame_rate=sample_rate
)
# Output file name
output_path = '/Users/username/Desktop/output.wav'
# Export audio file
audio.export(output_path, format='wav')
python /Users/username/Desktop/filename.py
→不显示错误消息,但没有声音添加到wav文件。
我将感激你的帮助。
附加信息:机器:MacBook Pro CPU:Apple M2 Pro OS:macOS Ventura 13.5.2版本:Python 3.10.4
1条答案
按热度按时间iq3niunx1#
您的波形都将是-1和1之间的数字。当您将波形转换为int 16值时,所有值都将四舍五入(全部变为0)。在将波形转换为int 16之前,您应该将其乘以32767(int 16的最大范围),看看是否有效。