Challenge Overview
Challenge Overview
In previous challenges, we have implemented two Azure function apps and one backend rest api, as well as UI.
In UI, there is one audio wave graph like this https://cl.ly/7847babc78f1 To generate it, frontend loads the wav file, analysis it and show the graph. However the wav file could be over 100MB sometimes, which causes slow page loading.
In this challenge, we are going to change this logic:
- create wav peaks file in webhook function app
- upload peaks file to blob
- update rest api to return peaks file location to frontend
Only 24 hours review time for this challenge.
Project Background
This project objective is to analyze customer service center call recordings for sentiment analysis. The main tasks that will be covered in the project are as follows.
- The call recording file and metadata available will be used to transcribe the audio
- Perform sentiment analysis on the corpus to extract key topic / positive or negative interaction / isolate portions of conversation by factors.
- Finally visualize the output along with filtering and aggregation.
Technology Stack
- Java 8
- Spring Boot 2.1.x
- [Azure SDK for Java](https://docs.microsoft.com/en-us/java/api/overview/azure/cognitiveservices/client?view=azure-java-stable) (Speech and Text Analytics)
- Azure Blob Storage (Optional)
- MSSQL (Azure SQL Database)
Challenge Assets
- codebase links
- one sample audio file
Individual requirements
- (major) generate wav peaks data in webhook function app
We have successfully generated peak file manually following "How to generate waveform data on the server?" section in https://wavesurfer-js.org/faq/
Please generate peak data in webhook function in Java code. It's not necessarily the same result. But we should see similar wave in result.
- (major) upload generated peaks file to blob
Blob information should be configurable. There is alread a configuration for container name in webhook, please use another config for uploading peaks file.
Wav file name can be found in Speech service callback response: results[0].recordingsUrl. If the wav filename is abc.xxx.wav, the peak filename should be abc.peak.json.
There is already one azure blob emulator in codebase, let's use this emulator to make sure we could test this feature locally.
- (major) add peak file location to RecordDetail table
Add new field called `peakFileUrl` in RecordDetail.
The value should be remote location, such as http://localhost:10000/container/abc.peak.json
- (major) sync RecordDetail model in backend api code
Add new field like above requirement in backend api.
Please make sure data.sql is up to date, backend api works and tests pass.
Important Notes
- Unit tests should still pass, although there is no need to add new tests.
- Please use docker-compose file in backend api to start database