Commit fd7543bd authored by LiniEisha's avatar LiniEisha Committed by I.K Seneviratne

FrontEnd

parent 229a6683
......@@ -6,4 +6,5 @@ from LectureSummarizingApp.models import *
admin.site.register(LectureAudio)
admin.site.register(LectureAudioNoiseRemoved)
admin.site.register(LectureSpeechToText)
admin.site.register(LectureNotices)
admin.site.register(LectureAudioSummary)
......@@ -4,7 +4,7 @@ from rest_framework.response import Response
from LectureSummarizingApp.models import LectureAudio, LectureAudioNoiseRemoved, LectureSpeechToText, \
LectureAudioSummary, LectureNotices
from LectureSummarizingApp.serializer import LectureAudioSerializer, LectureAudioNoiseRemovedSerializer, \
LectureSpeechToTextSerializer, LectureAudioSummarySerializer
LectureSpeechToTextSerializer, LectureAudioSummarySerializer, LectureNoticesSerializer
# this API will retrieve lecture audio details
......@@ -66,17 +66,20 @@ class lectureSummaryList(APIView):
).save()
return Response({"response": request.data})
class lectureNoticeList(APIView):
def get(self, request):
lecture_notice_id = LectureNotices.objects.all()
serializer = LectureSpeechToTextSerializer(lecture_notice_id, many=True)
return Response(serializer.data)
def post(self, request):
LectureSpeechToText(
lecture_notice_id=request.data["lecture_notice_id"],
lecture_audio_id=request.data["lecture_audio_id"],
notice_text=request.data["notice_text"]
).save()
return Response({"response": request.data})
\ No newline at end of file
class lectureNoticeList(APIView):
def get(self, request):
lecture_notice_id = LectureNotices.objects.all()
serializer = LectureNoticesSerializer(lecture_notice_id, many=True)
return Response(serializer.data)
def post(self, request):
LectureNotices(
lecture_notice_id=request.data["lecture_notice_id"],
lecture_audio_id=request.data["lecture_audio_id"],
notice_text=request.data["notice_text"]
).save()
return Response({"response": request.data})
......@@ -19,7 +19,7 @@ class LectureAudio (models.Model):
class LectureAudioNoiseRemoved (models.Model):
lecture_audio_noise_removed_id = models.CharField(max_length=10)
lecture_audio_id = models.ForeignKey(LectureAudio, on_delete=models.CASCADE)
lecture_audio_id = models.ForeignKey(LectureAudio, on_delete=models.CASCADE, default=0)
lecturer_date = models.DateField()
lecture_audio_name = models.CharField(max_length=50)
lecture_audio_length = models.DurationField()
......@@ -46,6 +46,7 @@ class LectureAudioSummary (models.Model):
def __str__(self):
return self.lecture_audio_summary_id
class LectureNotices (models.Model):
lecture_notice_id = models.CharField(max_length=10)
lecture_audio_id = models.ForeignKey(LectureAudio, on_delete=models.CASCADE)
......
......@@ -19,16 +19,16 @@ def read_file(file_name):
return y, sr
'''CENTROID'''
def reduce_noise_centroid_s(y, sr):
cent = librosa.feature.spectral_centroid(y=y, sr=sr)
threshold_h = np.max(cent)
threshold_l = np.min(cent)
less_noise = AudioEffectsChain().lowshelf(gain=-12.0, frequency=threshold_l, slope=0.5).highshelf(gain=-12.0, frequency=threshold_h, slope=0.5).limiter(gain=6.0)
y_cleaned = less_noise(y)
return y_cleaned
# '''CENTROID'''
#
# def reduce_noise_centroid_s(y, sr):
#
# cent = librosa.feature.spectral_centroid(y=y, sr=sr)
# threshold_h = np.max(cent)
# threshold_l = np.min(cent)
# less_noise = AudioEffectsChain().lowshelf(gain=-12.0, frequency=threshold_l, slope=0.5).highshelf(gain=-12.0, frequency=threshold_h, slope=0.5).limiter(gain=6.0)
# y_cleaned = less_noise(y)
# return y_cleaned
......@@ -111,19 +111,19 @@ for s in lectures:
y, sr = read_file(filename)
y_reduced_centroid_s = reduce_noise_centroid_s(y, sr)
# y_reduced_centroid_s = reduce_noise_centroid_s(y, sr)
y_reduced_mfcc_lowshelf = mfcc_lowshelf(y, sr)
y_reduced_mfcc_highshelf = mffc_highshelf(y, sr)
# trimming silences
y_reduced_centroid_s, time_trimmed = trim_silence(y_reduced_centroid_s)
# y_reduced_centroid_s, time_trimmed = trim_silence(y_reduced_centroid_s)
y_reduced_mfcc_up, time_trimmed = trim_silence(mfcc_lowshelf)
y_reduced_mfcc_down, time_trimmed = trim_silence(mffc_highshelf)
output_file('lectures_trimmed_noise_reduced/' ,filename, y_reduced_centroid_s, sr, '_ctr_s')
# output_file('lectures_trimmed_noise_reduced/' ,filename, y_reduced_centroid_s, sr, '_ctr_s')
output_file('lectures_trimmed_noise_reduced/' ,filename, y_reduced_mfcc_up, sr, '_mfcc_up')
output_file('lectures_trimmed_noise_reduced/' ,filename, y_reduced_mfcc_down, sr, '_mfcc_down')
output_file('lectures_trimmed_noise_reduced/' ,filename, y, sr, '_org')
# output_file('lectures_trimmed_noise_reduced/' ,filename, y_reduced_mfcc_down, sr, '_mfcc_down')
# output_file('lectures_trimmed_noise_reduced/' ,filename, y, sr, '_org')
......@@ -23,7 +23,8 @@ class LectureAudioNoiseRemovedSerializer(serializers.ModelSerializer):
class LectureSpeechToTextSerializer(serializers.ModelSerializer):
lecture_speech_to_text_id = LectureAudioNoiseRemovedSerializer()
# lecture_speech_to_text_id = LectureAudioNoiseRemovedSerializer()
lecture_audio_id = LectureAudioSerializer()
class Meta:
model = LectureSpeechToText
......@@ -31,7 +32,8 @@ class LectureSpeechToTextSerializer(serializers.ModelSerializer):
class LectureAudioSummarySerializer(serializers.ModelSerializer):
lecture_audio_noise_removed_id = LectureSpeechToTextSerializer()
# lecture_audio_noise_removed_id = LectureSpeechToTextSerializer()
lecture_audio_id = LectureAudioSerializer()
class Meta:
model = LectureAudioSummary
......@@ -39,8 +41,10 @@ class LectureAudioSummarySerializer(serializers.ModelSerializer):
class LectureNoticesSerializer(serializers.ModelSerializer):
lecture_audio_noise_removed_id = LectureSpeechToTextSerializer()
# lecture_audio_noise_removed_id = LectureSpeechToTextSerializer()
lecture_audio_id = LectureAudioSerializer()
class Meta:
model = LectureAudioSummary
# model = LectureAudioSummary
model = LectureNotices
fields = '__all__'
\ No newline at end of file
{% extends 'FirstApp/template.html' %}
<!DOCTYPE html>
<html lang="en">
<head>
......@@ -6,62 +7,355 @@
</head>
<body>
<!-- Page Wrapper -->
{% block javascript %}
{% load static %}
{% load static %}
<!-- Bootstrap core JavaScript-->
<script src="{% static 'FirstApp/vendor/jquery/jquery.min.js' %}"></script>
<script src="{% static 'FirstApp/vendor/bootstrap/js/bootstrap.bundle.min.js' %}"></script>
<script src="{% static 'FirstApp/vendor/jquery/jquery.min.js' %}"></script>
<script src="{% static 'FirstApp/vendor/bootstrap/js/bootstrap.bundle.min.js' %}"></script>
<!-- Page level plugins -->
<script src="{% static 'FirstApp/vendor/datatables/jquery.dataTables.min.js' %}"></script>
<script src="{% static 'FirstApp/vendor/datatables/dataTables.bootstrap4.min.js' %}"></script>
<!-- Page level plugins -->
<script src="{% static 'FirstApp/vendor/datatables/jquery.dataTables.min.js' %}"></script>
<script src="{% static 'FirstApp/vendor/datatables/dataTables.bootstrap4.min.js' %}"></script>
<!-- Page level custom scripts -->
<script src="{% static 'FirstApp/js/demo/datatables-demo.js' %}"></script>
<!-- Page level custom scripts -->
<script src="{% static 'FirstApp/js/demo/datatables-demo.js' %}"></script>
<!-- Core plugin JavaScript-->
<script src="{% static 'FirstApp/vendor/jquery-easing/jquery.easing.min.js' %}"></script>
<!-- Core plugin JavaScript-->
<script src="{% static 'FirstApp/vendor/jquery-easing/jquery.easing.min.js' %}"></script>
<!-- Load TensorFlow.js -->
<script src="https://unpkg.com/@tensorflow/tfjs"></script>
<!-- Load Posenet -->
<script src="https://unpkg.com/@tensorflow-models/posenet">
</script>
{% endblock %}
<div id="wrapper">
<!-- Sidebar -->
<!-- Content Wrapper -->
<div id="wrapper">
<div id="content-wrapper" class="d-flex flex-column">
<!-- Main Content -->
<div id="content">
<!-- Begin Page Content -->
{% block 'container-fluid' %}
<div class="container-fluid">
{% load static %}
<div class="container-fluid">
{% load static %}
<div class="d-sm-flex align-items-center justify-content-between mb-4">
<h1 class="h3 mb-0 text-gray-800">Lecture Summarization</h1>
</div>
<!--first row -->
<div class="row p-2">
<!--first column -->
<div class="col-lg-6" style="overflow-x: scroll">
<div class="card shadow mb-4">
<!--card header -->
<div class="card-header py-3">
<h5 class="m-0 font-weight-bold text-primary">Lecture Recording</h5>
</div>
<!--card body -->
<div class="card-body">
{% if lecture_audio_id.count == 0 %}
<div class="text-center">
<span class="font-italic">No Recordings</span>
</div>
{% else %}
<div class="table-responsive">
<table class="table table-bordered" id="datatable">
<thead>
<tr>
<th></th>
<th>Module</th>
<th>Date</th>
<th>Recording Name</th>
<th></th>
</tr>
</thead>
<tbody>
{% for lec_audio in lec_audio_data %}
<tr class="recordings not_clicked" id="{{ lec_audio.lecture_audio_id }}">
<td>
<div class="radio">
<label><input type="radio"
id="{{ lec_audio.lecture_audio_id }}"
name="recording_radio"
data-name="{{ lec_audio.lecture_audio_name }}"
></label>
</div>
</td>
<td>{{ lec_audio.subject.name }}</td>
<td>{{ lec_audio.lecturer_date }}</td>
<td>{{ lec_audio.lecture_audio_name }}</td>
<td>
<button TYPE="button" class="btn btn-success audio_process">Process
</button>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endif %}
</div>
<!-- Page Heading -->
<div class="d-sm-flex align-items-center justify-content-between mb-4">
<h1 class="h3 mb-0 text-gray-800">Lecture Summarization</h1>
</div>
</div>
<!-- end of 1st column -->
<!-- 2nd column -->
<div class="col-lg-6" style="overflow-x: scroll">
<div class="card shadow mb-4">
<!--card header -->
<div class="card-header py-3">
<h5 class="m-0 font-weight-bold text-primary">Lecture Recording (Noise-Removed)</h5>
</div>
<!--card body -->
<div class="card-body">
{% if noiseless_data.count == 0 %}
<div class="text-center">
<span class="font-italic">No Recordings</span>
</div>
{% else %}
<div class="table-responsive">
<table class="table table-bordered" id="datatable">
<thead>
<tr>
<th></th>
<th>Module</th>
<th>Date</th>
<th>Recording Name</th>
<th></th>
</tr>
</thead>
<tbody>
{% for noiseless_audio in noiseless_data %}
<tr class="recordings not_clicked" id="{{ noiseless_audio.lecture_audio_id }}">
<td>
<div class="radio">
<label><input type="radio"
id="{{ noiseless_audio.lecture_audio_id }}"
name="recording_radio"
data-name="{{ noiseless_audio.lecture_audio_name }}"
></label>
</div>
</td>
<td>{{ noiseless_audio.lecture_audio_id.subject.name }}</td>
<td>{{ noiseless_audio.lecture_audio_id.lecturer_date }}</td>
<td>{{ noiseless_audio.lecture_audio_name }}</td>
<td>
<button TYPE="button" class="btn btn-success audio_to_text_process">Convert
</button>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endif %}
</div>
</div>
</div>
<!-- end of 2nd column -->
</div>
<!-- end of 1st row-->
<!--2ND row -->
<div class="row p-2">
<!--first row -->
<div class="row p-2">
<!--first column -->
<div class="col-lg-6" style="overflow-x: scroll">
<div class="card shadow mb-4">
<!--card header -->
<div class="card-header py-3">
<h5 class="m-0 font-weight-bold text-primary">Converted Lecture (Text)</h5>
</div>
<!--first column -->
<div class="col-lg-6" style="overflow-x: scroll">
<div class="card shadow mb-4">
<!--card header -->
<div class="card-header py-3">
<h5 class="m-0 font-weight-bold text-primary">Remove Background noise</h5>
<!--card body -->
<div class="card-body">
{% if lecture_audio_id.count == 0 %}
<div class="text-center">
<span class="font-italic">No Recordings</span>
</div>
<!--card body -->
<div class="card-body">
{% if lecturer_subjects.count == 0 %}
<div class="text-center">
<span class="font-italic">No subjects</span>
</div>
{% else %}
<div class="table-responsive">
<table class="table table-bordered" id="datatable">
<thead>
<tr>
<th></th>
<th>Module</th>
<th>Date</th>
<th>Text ID</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
{% for lec_text in lecture_text_data %}
<tr class="recordings not_clicked" id="{{ lec_text.lecture_audio_id }}">
<td>
<div class="radio">
<label><input type="radio"
id="{{ lec_text.lecture_audio_id }}"
name="recording_radio"
data-name="{{ lec_text.lecture_audio_name }}"
></label>
</div>
</td>
<td>{{ lec_text.lecture_audio_id.subject.name }}</td>
<td>{{ lec_text.lecture_audio_id.lecturer_date }}</td>
<td>{{ lec_text.lecture_speech_to_text_id }}</td>
<td>
<button TYPE="button" class="btn btn-success to_summary">Summary
</button>
</td>
<td>
<button TYPE="button" class="btn btn-success get_notices">Notices
</button>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endif %}
</div>
</div>
</div>
<!-- end of 1st column -->
</div>
<!-- end of 2nd row-->
<!--3rd row -->
<div class="row p-2">
<!--first column -->
<div class="col-lg-6" style="overflow-x: scroll">
<div class="card shadow mb-4">
<!--card header -->
<div class="card-header py-3">
<h5 class="m-0 font-weight-bold text-primary">Lecture Summary</h5>
</div>
<!--card body -->
<div class="card-body">
{% if lecture_audio_summary_id.count == 0 %}
<div class="text-center">
<span class="font-italic">No Summaries</span>
</div>
{% else %}
<div class="table-responsive">
<table class="table table-bordered" id="datatable">
<thead>
<tr>
<th></th>
<th>Module</th>
<th>Date</th>
<th>Summary</th>
</tr>
</thead>
<tbody>
{% for lec_summary in lec_summary_data %}
<tr class="recordings not_clicked" id="{{ lec_summary.lecture_audio_id }}">
<td>
<div class="radio">
<label><input type="radio"
id="{{ lec_summary.lecture_audio_id }}"
name="recording_radio"
data-name="{{ lec_summary.lecture_audio_name }}"
></label>
</div>
</td>
<td>{{ lec_summary.lecture_audio_id.subject.name }}</td>
<td>{{ lec_summary.lecture_audio_id.lecturer_date }}</td>
<td>{{ lec_summary.lecture_audio_summary_id }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endif %}
</div>
</div>
</div>
<!-- end of 1st column -->
<!-- 2nd column -->
<div class="col-lg-6" style="overflow-x: scroll">
<div class="card shadow mb-4">
<!--card header -->
<div class="card-header py-3">
<h5 class="m-0 font-weight-bold text-primary">Lecture Notices</h5>
</div>
<!--card body -->
<div class="card-body">
{% if noiseless_data.count == 0 %}
<div class="text-center">
<span class="font-italic">No Recordings</span>
</div>
{% else %}
<div class="table-responsive">
<table class="table table-bordered" id="datatable">
<thead>
<tr>
<th></th>
<th>Module</th>
<th>Date</th>
<th>Notices</th>
</tr>
</thead>
<tbody>
{% for lec_notice in lec_notice_data %}
<tr class="recordings not_clicked" id="{{ lec_notice.lecture_audio_id }}">
<td>
<div class="radio">
<label><input type="radio"
id="{{ lec_notice.lecture_audio_id }}"
name="recording_radio"
data-name="{{ noiseless_audio.lecture_audio_name }}"
></label>
</div>
</td>
<td>{{ lec_notice.lecture_audio_id.subject.name }}</td>
<td>{{ lec_notice.lecture_audio_id.lecturer_date }}</td>
<td>{{ lec_notice.lecture_notice_id }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endif %}
</div>
</div>
</div>
<!-- end of 2nd column -->
{% endblock %}
</div>
</div>
</div>
</body>
</html>
\ No newline at end of file
......@@ -6,13 +6,35 @@ from rest_framework.response import Response
from rest_framework import viewsets
from .models import LectureAudio, LectureAudioNoiseRemoved, LectureSpeechToText, LectureAudioSummary, LectureNotices
from .serializer import LectureAudioSerializer, LectureAudioNoiseRemovedSerializer, LectureAudioSummarySerializer, \
LectureSpeechToTextSerializer
LectureSpeechToTextSerializer, LectureNoticesSerializer
# Create your views here.
def summarization(request):
return render(request, "LectureSummarizingApp/summarization.html")
lec_audio = LectureAudio.objects.all()
lec_audio_serializer = LectureAudioSerializer(lec_audio, many=True)
data = lec_audio_serializer.data
lec_noiseless_audio = LectureAudioNoiseRemoved.objects.all()
lec_noiseless_audio_ser = LectureAudioNoiseRemovedSerializer(lec_noiseless_audio, many=True)
noiseless_data = lec_noiseless_audio_ser.data
lec_text = LectureSpeechToText.objects.all()
lec_text_ser = LectureSpeechToTextSerializer(lec_text, many=True)
lecture_text_data = lec_text_ser.data
lec_summary = LectureAudioSummary.objects.all()
lec_summary_ser = LectureAudioSummarySerializer(lec_summary, many=True)
lec_summary_data = lec_summary_ser.data
lec_notice = LectureNotices.objects.all()
lec_notice_ser = LectureNoticesSerializer(lec_notice, many=True)
lec_notice_data = lec_notice_ser.data
return render(request, "LectureSummarizingApp/summarization.html", {"lec_audio_data": data, "noiseless_data": noiseless_data,"lecture_text_data": lecture_text_data, "lec_summary_data" : lec_summary_data, "lec_notice_data":lec_notice_data})
class audioList(APIView):
......@@ -79,11 +101,11 @@ class lectureSummaryList(APIView):
def get(self, request):
lecture_notice_id = LectureNotices.objects.all()
serializer = LectureSpeechToTextSerializer(lecture_notice_id, many=True)
serializer = LectureNoticesSerializer(lecture_notice_id, many=True)
return Response(serializer.data)
def post(self, request):
LectureSpeechToText(
LectureNotices(
lecture_notice_id=request.data["lecture_notice_id"],
lecture_audio_id=request.data["lecture_audio_id"],
notice_text=request.data["notice_text"]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment