Changeset 35241


Ignore:
Timestamp:
2021-08-03T15:30:08+12:00 (3 years ago)
Author:
davidb
Message:

Implement support for returning proper audio file name

Location:
gs3-extensions/atea-nlp-tools/trunk/src/koreromaori-proxy/src/main/java/org/atea/nlptools/koreromaoriinterface
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • gs3-extensions/atea-nlp-tools/trunk/src/koreromaori-proxy/src/main/java/org/atea/nlptools/koreromaoriinterface/TranscriptionServlet.java

    r35240 r35241  
    33import java.io.FileInputStream;
    44import java.io.IOException;
    5 import java.io.InputStream;
    65import java.io.PrintWriter;
    76import java.lang.reflect.Type;
     
    1514import javax.servlet.http.HttpServletRequest;
    1615import javax.servlet.http.HttpServletResponse;
     16import javax.servlet.http.Part;
    1717
    1818import com.google.gson.FieldNamingPolicy;
     
    2323import org.apache.logging.log4j.LogManager;
    2424import org.apache.logging.log4j.Logger;
     25import org.atea.nlptools.koreromaoriinterface.models.AudioFilePart;
    2526import org.atea.nlptools.koreromaoriinterface.models.MyTranscriptionResponse;
    2627import org.atea.nlptools.koreromaoriinterface.models.TranscriptionResult;
     
    8687        String[] audioFileKeys = audioFileKeysParameter.split("\\|");
    8788
    88         ArrayList<InputStream> audioFileStreams = new ArrayList<InputStream>(audioFileKeys.length);
     89        ArrayList<AudioFilePart> audioFileParts = new ArrayList<AudioFilePart>(audioFileKeys.length);
    8990        for (String audioFileKey : audioFileKeys)
    9091        {
    91             audioFileStreams.add(request.getPart(audioFileKey).getInputStream());
     92            Part p = request.getPart(audioFileKey);
     93            AudioFilePart audioFilePart = AudioFilePart.fromPart(p);
     94            audioFileParts.add(audioFilePart);
    9295        }
    9396
    9497        try
    9598        {
    96             List<TranscriptionResult> results = transcriptionService.GetTranscriptions(audioFileStreams);
     99            List<AudioFilePart> results = transcriptionService.GetTranscriptions(audioFileParts);
    97100            List<MyTranscriptionResponse> responses = new ArrayList<MyTranscriptionResponse>(results.size());
    98101
    99             for (TranscriptionResult result : results) {
    100                 responses.add(MyTranscriptionResponse.FromTranscriptionResult(result, "placeholder")); // TODO: Insert correct file name
     102            for (AudioFilePart result : results) {
     103                responses.add(MyTranscriptionResponse.FromTranscriptionResult(result.getTranscriptionResult(), result.fileName));
    101104            }
    102105
  • gs3-extensions/atea-nlp-tools/trunk/src/koreromaori-proxy/src/main/java/org/atea/nlptools/koreromaoriinterface/services/ReoTuhituhiApiService.java

    r35240 r35241  
    1414import org.apache.logging.log4j.LogManager;
    1515import org.apache.logging.log4j.Logger;
     16import org.atea.nlptools.koreromaoriinterface.models.AudioFilePart;
    1617import org.atea.nlptools.koreromaoriinterface.models.TranscriptionResult;
    1718
     
    4041     * Queries the Reo Tuhituhi API to transcribe the given audio files.
    4142     *
    42      * @param audioFileStreams The audio files to retrieve a transcription for.
     43     * @param audioFileParts The audio files to retrieve a transcription for.
    4344     * @return A list of {@link TranscriptionResult} objects.
    4445     * @throws Exception
    4546     */
    46     public List<TranscriptionResult> GetTranscriptions(Iterable<InputStream> audioFileStreams)
     47    public List<AudioFilePart> GetTranscriptions(Iterable<AudioFilePart> audioFileParts)
    4748        throws Exception
    4849    {
    49         Queue<Future<TranscriptionResult>> apiCalls = new LinkedList<Future<TranscriptionResult>>();
     50        Queue<Future<AudioFilePart>> apiCalls = new LinkedList<Future<AudioFilePart>>();
    5051
    5152        // Queue each transcription request up asynchronously
    52         for (InputStream audioStream : audioFileStreams)
     53        for (AudioFilePart part : audioFileParts)
    5354        {
    5455            //Callable<TranscriptionResult> transcriptionTask = getTranscriptionCallable(audioStream);
     
    5758        }
    5859
    59         List<TranscriptionResult> apiResults = new ArrayList<TranscriptionResult>(apiCalls.size());
     60        List<AudioFilePart> apiResults = new ArrayList<AudioFilePart>(apiCalls.size());
    6061       
    61         for (InputStream audioStream : audioFileStreams)
     62        for (AudioFilePart part : audioFileParts)
    6263        {
    63             apiResults.add(getTranscription(audioStream));
    64             logger.debug("API call has completed.");
     64            TranscriptionResult res = getTranscription(part.dataStream);
     65            part.setTranscriptionResult(res);
     66            apiResults.add(part);
    6567        }
    6668
     
    7678    }
    7779
    78     private Callable<TranscriptionResult> getTranscriptionCallable(final InputStream audioStream)
     80    private Callable<AudioFilePart> getTranscriptionCallable(final AudioFilePart part)
    7981    {
    80         return new Callable<TranscriptionResult>()
     82        return new Callable<AudioFilePart>()
    8183        {
    8284            @Override
    83             public TranscriptionResult call() throws Exception
     85            public AudioFilePart call() throws Exception
    8486            {
    85                 return getTranscription(audioStream);
     87                TranscriptionResult res = getTranscription(part.dataStream);
     88                part.setTranscriptionResult(res);
     89                return part;
    8690            }
    8791        };
     
    97101            .body();
    98102
    99         logger.debug("Reo Tuhituhi API responded with a success status.");
     103        logger.trace("Reo Tuhituhi API responded with a success status.");
    100104        TranscriptionResult res = jsonSerialiser.fromJson(jsonResponse, TranscriptionResult.class);
    101         logger.debug("Reo Tuhituhi API response was succesfully deserialised.");
     105        logger.trace("Reo Tuhituhi API response was succesfully deserialised.");
    102106        return res;
    103107    }
Note: See TracChangeset for help on using the changeset viewer.