タイトルにもある通りWaterMelonSoundのWebアプリとAPIを公開しました。
この記事は主にその2つの使い方などを紹介するものです。
WaterMelonSoundについては過去の記事を参照
Webアプリ
WebアプリURL: WaterMelonSound
使い方
- [ファイルを選択]から拡張子が.wavの音声ファイルを選択する。
- [アップロード]をクリックすると結果が表示される
API
使い方
サンプルコード(Python3)
import requests import json url = "https://jun-web.herokuapp.com/watermelonsound/api/" path = "shuukaku_1.wav" files = {"wav_file": open(path,"rb")} res = requests.post(url, files=files) print(res.json()["status"])
結果
1
上記のURLに"wav_file": wavファイル
と指定し、postリクエストを送ると判定結果がjsonで返ってくる。
成熟していれば1、未熟なら0が返ってくる。
システム的な話
ライブラリ(バージョン)
もしかしたら需要あるかもなのでviews.pyのコード載せときます。 views.py
from django.shortcuts import render, HttpResponse from django.template.context_processors import csrf from django.views.decorators.csrf import csrf_exempt from django.http import JsonResponse import os from .app.main import predict_watermelon # 判定の関数 def form(request): if request.method != 'POST': # POSTリクエストじゃない場合の処理 c = {} c.update(csrf(request)) return render(request, 'watermelonsound/index.html') file = request.FILES["file"] file_name = file.name if os.path.splitext(file_name)[1] != ".wav": return HttpResponse("The extension of this file is not wav") # 「このファイルの拡張子はwavじゃありません」 result = predict_watermelon(file) if result == 0: result = "早熟" else: result = "成熟" return render(request, 'watermelonsound/result.html', { "result": result }) @csrf_exempt def api(request): if request.method != 'POST': c = {} c.update(csrf(request)) return JsonResponse({"status": "Your request is not post request."}) wav_file = request.FILES["wav_file"] file_name = wav_file.name # ex: 'shuukaku_1.wav' if os.path.splitext(file_name)[1] != ".wav": result = "The extension of this file is not wav." else: result = predict_watermelon(wav_file) return JsonResponse({"status": result})
Django始めたばかりの初心者が書いたコードなので間違いや、もっと改善できそうな部分あればぜひコメントで教えてください。
参考にしたサイト