45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
import numpy as np
|
|
from scipy.io import wavfile
|
|
import pandas as pd
|
|
|
|
# 打开Excel文件
|
|
def get_data(file_path, column_list, cv_name):
|
|
excel_data = pd.read_excel(file_path)
|
|
wav_title_list = []
|
|
# 逐行读取指定列的数据
|
|
for index, row in excel_data.iterrows():
|
|
title = row[column_list[0]]
|
|
role = row[column_list[1]]
|
|
num = row[column_list[2]]
|
|
wav_title = title + '-' + role + '-' + cv_name + '-' + num
|
|
wav_title_list.append(wav_title)
|
|
return wav_title_list
|
|
|
|
|
|
def creat_wav_file(wav_title_list, sample_rate, duration):
|
|
# 生成一个时间数组,用于表示音频信号的时间
|
|
t = np.linspace(0, duration, int(sample_rate * duration), endpoint=False)
|
|
|
|
# 生成一个440 Hz的正弦波
|
|
frequency = 440 # 440 Hz
|
|
audio_signal = np.sin(2 * np.pi * frequency * t)
|
|
|
|
# 将音频信号缩放到24位的范围[-2^23, 2^23-1]
|
|
audio_signal = np.int32(audio_signal * 2**23)
|
|
|
|
for i in wav_title_list:
|
|
wavfile.write(r"C:\Users\Cori\Downloads\test\{}.wav".format(i), sample_rate, audio_signal)
|
|
print('已成功创建{}文件'.format(i))
|
|
|
|
if __name__ == '__main__':
|
|
file_path = r"C:\Users\Cori\Downloads\逍遥小医仙剧组.xlsx"
|
|
column_list = ['章节名','角色名','台词数']
|
|
cv_name = input('请输入CV姓名')
|
|
wav_title_list = get_data(file_path, column_list, cv_name)
|
|
# 设置采样率为44100 Hz
|
|
sample_rate = 44100
|
|
# 设置音频信号的时长(秒)
|
|
duration = 5.0
|
|
creat_wav_file(wav_title_list, sample_rate, duration)
|
|
|