我想使用Python创建一个Web服务。 服务内容如下。
主要目的是分析音乐文件并创建一个新文件,为此目的输入和输出音乐文件是第二功能。因此,我不具备创建Web服务的知识,需要帮助来实现此功能。我上网并在一定程度上实现了它,但是却出现了一个我不知道为什么的错误。
我上传了app.py和 init .py的代码。我还上传了目录的结构。似乎需要修复一些问题才能使用控制器内部的功能。我已经在互联网和YouTube上搜索了十二个多小时,但我真的不知道。我在控制器目录中创建了一个名为NoteConvertor和MarcovMatrix的类。
它一直运行到我转到http://127.0.0.1:5000/并收到文件为止。然后出现以下错误:
wav_transform中的文件“ C:\ Users \ K \ git \ flask \ gp \ app.py”,第24行
sr,数据= scipy.io.wavfile('static / file1.wav')
TypeError:“模块”对象不可调用
-gp
|----controller
| MarcovMatrix.py
| MatrixBuilder.py
| NoteConvertor.py
|----static
| style.css
|----templates
| index.html
| upload.html
| wavplay.html
|----__init__.py
|----app.py
app.py
import flask
from flask import Flask, request, render_template
from werkzeug.utils import secure_filename
import scipy
import numpy as np
from scipy import misc
import pysynth as ps
from scipy.io import wavfile
app = Flask(__name__)
@app.route('/')
@app.route("/upload")
def index():
return render_template('index.html')
@app.route('/uploader', methods=['GET', 'POST'])
def wav_transform():
if request.method == 'POST':
f = request.files['file']
f.save(f'static/file1.wav')
sr, data = scipy.io.wavfile('static/file1.wav')
empty_notes = controller.NoteConvertor(data)
notes = empty_notes.convertor()
song = sum(notes, [])
matrix = controller.MarcovMatrix(song)
start_note = ['e4', 4]
random_song = []
for i in range(0, 100):
start_note = matrix.next_note(start_note)
random_song.append(start_note)
ps.make_wav(random_song, fn='static/random.wav')
return render_template('wavplay.html')
if __name__ == '__main__':
app.run(debug = True)
__init__.py
from gp.controller import MarcovMatrix
from gp.controller import MatrixBuilder
from gp.controller import NoteConvertor
我想告诉您如何使用烧瓶内以python(在控制器内部)编写的函数。
如果您想知道如何做我想实现的目标,我将不胜感激。请理解这个问题,因为学习网络基础不是我的主要目标。
答案 0 :(得分:0)
这是一个导入问题。您可以选择
import scipy
...
sr, data = scipy.io.wavfile('static/file1.wav')
或
from scipy.io import wavfile
...
sr, data = wavfile('static/file1.wav')