ошибка регистрации при использовании Microsoft Azure API во время регистрации докладчика - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь использовать MS Azure Speaker API (Java) в соответствии с https://westus.dev.cognitive.microsoft.com/docs/services/563309b6778daf02acc0a508/operations/5645c3271984551c84ec6797. Я могу получить идентификационный номер. Ошибка происходит, когда я пытаюсь зарегистрироваться. Вот как я поступаю - получить WAV-файл аудио записи - конвертировать в base64 (через онлайн-сервис) - прикрепите base64 его как контент к вызову для зачисления вместе с идентификацииProfileId. Я сомневаюсь в части b64

Я получаю «Неверный формат аудио: не файл WAVE - нет заголовка RIFF»

Мне известно, что службе требуется аудио в кодировке PCM согласно документу.

Может кто-нибудь, пожалуйста, дайте мне знать, как преобразовать аудио WAV в нужный формат, который можно передать конечной точке REST регистрации.

public class azureApiTest 
{

     public static String getID() 
    {
        HttpClient httpclient = HttpClients.createDefault();
        String ret = null;

        try
        {
            URIBuilder builder = new URIBuilder("https://westus.api.cognitive.microsoft.com/spid/v1.0/identificationProfiles");


            URI uri = builder.build();
            HttpPost request = new HttpPost(uri);
            request.setHeader("Content-Type", "application/json");
            request.setHeader("Ocp-Apim-Subscription-Key", "fad541725xxxxxxx3362125790411");


            // Request body

            JsonObject locale = new JsonObject();
            locale.addProperty("locale", "en-us");

            StringEntity reqEntity = new StringEntity(locale.toString());
            request.setEntity(reqEntity);

            HttpResponse response = httpclient.execute(request);
            HttpEntity entity = response.getEntity();

            if (entity != null) 
            {
                JsonParser parser = new JsonParser();
                JsonObject o = parser.parse(EntityUtils.toString(entity)).getAsJsonObject();
                ret = o.get("identificationProfileId").getAsString();

            }
        }
        catch (Exception e)
        {
            System.out.println(e.getMessage());
        }
        finally
        {
            return ret;
        }
    }

    public static void main(String[] args) 
    {
        HttpClient httpclient = HttpClients.createDefault();

        try
        {
            String id = azureApiTest.getID();
            System.out.println("ID created = "+id);
            String enrollURL = "https://westus.api.cognitive.microsoft.com/spid/v1.0/identificationProfiles/" +id + "/enroll";
                        System.out.println("enrollURL  = "+enrollURL);

            URIBuilder builder = new URIBuilder(enrollURL);

            builder.setParameter("shortAudio", "true");

            URI uri = builder.build();
            HttpPost request = new HttpPost(uri);
            request.setHeader("Content-Type", "multipart/form-data");
            request.setHeader("Ocp-Apim-Subscription-Key", "fad5417xxxxxxx3362125790411");


            // Request body

            File voiceb64 = new File("/Users/premnair/Desktop/vp/voice1b64.txt");

            String data = FileUtils.readFileToString(voiceb64, "utf-8");
            StringEntity reqEntity = new StringEntity(data);
            request.setEntity(reqEntity);

            HttpResponse response = httpclient.execute(request);
            HttpEntity entity = response.getEntity();

            if (entity != null) 
            {
                System.out.println(EntityUtils.toString(entity));
            }
        }
        catch (Exception e)
        {
            System.out.println(e.getMessage());
        }
    }
}

1 Ответ

0 голосов
/ 28 апреля 2019

Если я передам файл, как показано ниже, он будет работать!

 File file = new File("/Users/jdoe/Desktop/vp/v5.wav");
 request.setEntity( new FileEntity(file, ContentType.APPLICATION_OCTET_STREAM) );
...