Python 自动调谐静音输出

Python 自动调谐静音输出,python,numpy,scikits,auto-tuning,Python,Numpy,Scikits,Auto Tuning,我一直在玩PyAutoTune模块有一段时间了,我似乎无法让它工作。不幸的是,文档是不存在的,我唯一需要处理的就是Examples文件夹中的示例 我想做的是从TTS引擎获取一个.wav文件并自动调谐,以获得更像机器人的声音。但我似乎无法让它工作。 当我尝试运行FromFileAutoTune表单命令行时,我只得到一个没有声音的空wav文件 我所尝试的: 我试着编写打印语句来监控流程的不同部分 我注意到我的wav文件有一个16位的深度,所以我试着将块作为16位整数读取,然后将它们转换为float

我一直在玩PyAutoTune模块有一段时间了,我似乎无法让它工作。不幸的是,文档是不存在的,我唯一需要处理的就是Examples文件夹中的示例

我想做的是从TTS引擎获取一个.wav文件并自动调谐,以获得更像机器人的声音。但我似乎无法让它工作。 当我尝试运行FromFileAutoTune表单命令行时,我只得到一个没有声音的空wav文件

我所尝试的:
  • 我试着编写打印语句来监控流程的不同部分
  • 我注意到我的wav文件有一个16位的深度,所以我试着将块作为16位整数读取,然后将它们转换为float32。我得到的数据是完全相同的,所以这没有真正的帮助
  • 我可以看到块被正确读取,数据数组具有正确的格式
  • 我可以看到,来自
    AutoTune.Tuner(…)
    的rawfromC数据几乎总是一个0长字符串,这让我很担心
  • 我检查了另一个示例(
    realtimeautune
    ),它运行得非常好。我能用麦克风说话,并能(几乎)实时获得自动调谐版本。所以我知道这个模块在那里工作
由于我在
AutoTune.Tuner()
函数中插入的数据在两个示例中几乎具有相同的结构,并且其他参数完全相同,因此我希望输出为非空,但事实并非如此。我错过了什么明显的东西吗?另外,现在对我来说,
AutoTune.Tuner()
只是一个神奇的黑匣子,除了从提供的两个示例中可以推断出的内容外,没有任何关于它需要什么输入和产生什么输出的指示。非常感谢任何能为我指明正确方向的东西

以下是我目前的代码:

#Copyright (c) 2012, Eng Eder de Souza
#AutoTune from Wav File Example!

import sys
import numpy
import scikits.audiolab as audiolab 
import AutoTune

FORM_CORR=0
SCALE_ROTATE=0
LFO_QUANT=0
CONCERT_A=440.0
FIXED_PITCH=2.0
FIXED_PULL=0.1
CORR_STR=1.0
CORR_SMOOTH=0.0
PITCH_SHIFT=1.0
LFO_DEPTH=0.1
LFO_RATE=1.0
LFO_SHAPE=0.0
LFO_SYMM=0.0
FORM_WARP=0.0
MIX=1.0
KEY="c"
CHUNK=2048


NewSignal=[]

if len(sys.argv)<3 :
        print('Usage: '+sys.argv[0]+' <Input audio file.wav> <Output audio file.wav>')
        sys.exit(0)

IN=sys.argv[1]
OUT=sys.argv[2]





f = audiolab.Sndfile(IN, 'r')

FS = f.samplerate
nchannels  = f.channels



datas = f.read_frames(CHUNK, dtype=numpy.int16).astype(numpy.float32)*(1.0/32768.0)
print(datas) #this returns the correct data structure ([0.xxxxx 0.xxxxxx ... 0.xxxx])

while datas !='':

    print(".")
    Signal = datas.data[:]
    print(datas.dtype) #this outputs float32, as it should be

    rawfromC=AutoTune.Tuner(Signal,FS,CHUNK,SCALE_ROTATE,SCALE_ROTATE,LFO_QUANT,CONCERT_A,FIXED_PITCH,FIXED_PULL,CORR_STR,CORR_SMOOTH,PITCH_SHIFT,LFO_DEPTH,LFO_RATE,LFO_SHAPE,LFO_SYMM,FORM_WARP,MIX,KEY)
    for s in rawfromC:
        NewSignal.append(s)
    print(rawfromC) #this almost only returns an array of 0s

    try:
        datas = f.read_frames(CHUNK, dtype=numpy.int16).astype(numpy.float32)*(1.0/32768.0)
        print("datas:"+str(datas)) #datas seems to be correctly formatted

    except:
        break

dataArray = numpy.array(NewSignal)
fmt         = audiolab.Format('wav', 'pcm32')


# making the file .wav
afile =  audiolab.Sndfile(OUT, 'w', fmt, nchannels, FS)

#writing in the file
afile.write_frames(dataArray)

print("Done!")
#版权所有(c)2012,Eng Eder de Souza
#从Wav文件自动调谐示例!
导入系统
进口numpy
将scikits.audiolab导入为audiolab
导入自动调谐
表1=0
比例旋转=0
LFO_QUANT=0
音乐会A=440.0
固定螺距=2.0
固定拉力=0.1
CORR_STR=1.0
CORR_平滑=0.0
俯仰位移=1.0
LFO_深度=0.1
LFO_率=1.0
LFO_形状=0.0
LFO_对称=0.0
形状扭曲=0.0
混合=1.0
KEY=“c”
区块=2048
NewSignal=[]
if len(系统argv)