use of com.ibm.watson.developer_cloud.speech_to_text.v1.model.CreateJobOptions in project java-sdk by watson-developer-cloud.
the class SpeechToTextTest method testCreateJob.
@Test
public void testCreateJob() throws InterruptedException, FileNotFoundException {
String callbackUrl = "callback";
String events = CreateJobOptions.Events.RECOGNITIONS_STARTED;
String userToken = "token";
Long resultsTtl = 5L;
File audio = SAMPLE_WAV;
String contentType = CreateJobOptions.ContentType.AUDIO_WAV;
String model = CreateJobOptions.Model.EN_US_BROADBANDMODEL;
String customizationId = "customizationId";
Double customizationWeight = 5d;
String version = "version";
Long inactivityTimeout = 20L;
List<String> keywords = Arrays.asList("keyword1", "keyword2");
Float keywordsThreshold = 5f;
Boolean wordConfidence = true;
Boolean timestamps = true;
Boolean profanityFilter = true;
Boolean smartFormatting = true;
Boolean speakerLabels = true;
RecognitionJob job = loadFixture("src/test/resources/speech_to_text/job.json", RecognitionJob.class);
server.enqueue(new MockResponse().addHeader(CONTENT_TYPE, HttpMediaType.APPLICATION_JSON).setBody(GSON.toJson(job)));
CreateJobOptions createOptions = new CreateJobOptions.Builder().callbackUrl(callbackUrl).events(events).userToken(userToken).resultsTtl(resultsTtl).audio(audio).contentType(contentType).model(model).customizationId(customizationId).customizationWeight(customizationWeight).version(version).inactivityTimeout(inactivityTimeout).keywords(keywords).keywordsThreshold(keywordsThreshold).wordConfidence(wordConfidence).timestamps(timestamps).profanityFilter(profanityFilter).smartFormatting(smartFormatting).speakerLabels(speakerLabels).build();
service.createJob(createOptions).execute();
final RecordedRequest request = server.takeRequest();
assertEquals("POST", request.getMethod());
assertEquals(PATH_RECOGNITIONS + "?model=" + model + "&callback_url=" + callbackUrl + "&events=" + events + "&user_token=" + userToken + "&results_ttl=" + resultsTtl + "&customization_id=" + customizationId + "&customization_weight=" + customizationWeight + "&version=" + version + "&inactivity_timeout=" + inactivityTimeout + "&keywords=" + StringUtils.join(keywords, ',') + "&keywords_threshold=" + keywordsThreshold + "&word_confidence=" + wordConfidence + "×tamps=" + timestamps + "&profanity_filter=" + profanityFilter + "&smart_formatting=" + smartFormatting + "&speaker_labels=" + speakerLabels, request.getPath());
}
use of com.ibm.watson.developer_cloud.speech_to_text.v1.model.CreateJobOptions in project java-sdk by watson-developer-cloud.
the class SpeechToTextIT method testCreateJobWarning.
/**
* Test create job with a warning message.
*
* This test is currently being ignored as it has a very long runtime and causes Travis to timeout.
* The ignore annotation can be removed to test this locally.
*
* @throws InterruptedException the interrupted exception
* @throws FileNotFoundException the file not found exception
*/
@Ignore
@Test
public void testCreateJobWarning() throws InterruptedException, FileNotFoundException {
File audio = new File(SAMPLE_WAV);
CreateJobOptions createOptions = new CreateJobOptions.Builder().audio(audio).contentType(CreateJobOptions.ContentType.AUDIO_WAV).userToken("job").build();
RecognitionJob job = service.createJob(createOptions).execute();
try {
assertNotNull(job.getId());
assertNotNull(job.getWarnings());
CheckJobOptions checkOptions = new CheckJobOptions.Builder().id(job.getId()).build();
for (int x = 0; x < 30 && job.getStatus() != RecognitionJob.Status.COMPLETED; x++) {
Thread.sleep(3000);
job = service.checkJob(checkOptions).execute();
}
job = service.checkJob(checkOptions).execute();
assertEquals(RecognitionJob.Status.COMPLETED, job.getStatus());
assertNotNull(job.getResults());
} finally {
DeleteJobOptions deleteOptions = new DeleteJobOptions.Builder().id(job.getId()).build();
service.deleteJob(deleteOptions).execute();
}
}
use of com.ibm.watson.developer_cloud.speech_to_text.v1.model.CreateJobOptions in project java-sdk by watson-developer-cloud.
the class SpeechToTextIT method testCreateJob.
/**
* Test create job.
*
* @throws InterruptedException the interrupted exception
* @throws FileNotFoundException the file not found exception
*/
@Test
public void testCreateJob() throws InterruptedException, FileNotFoundException {
File audio = new File(SAMPLE_WAV);
Long maxAlternatives = 3L;
Float wordAlternativesThreshold = 0.5f;
CreateJobOptions createOptions = new CreateJobOptions.Builder().audio(audio).contentType(CreateJobOptions.ContentType.AUDIO_WAV).maxAlternatives(maxAlternatives).wordAlternativesThreshold(wordAlternativesThreshold).build();
RecognitionJob job = service.createJob(createOptions).execute();
try {
assertNotNull(job.getId());
CheckJobOptions checkOptions = new CheckJobOptions.Builder().id(job.getId()).build();
for (int x = 0; x < 30 && !job.getStatus().equals(RecognitionJob.Status.COMPLETED); x++) {
Thread.sleep(3000);
job = service.checkJob(checkOptions).execute();
}
job = service.checkJob(checkOptions).execute();
assertEquals(RecognitionJob.Status.COMPLETED, job.getStatus());
assertNotNull(job.getResults());
assertTrue(job.getResults().get(0).getResults().get(0).getAlternatives().size() <= maxAlternatives);
List<WordAlternativeResults> wordAlternatives = job.getResults().get(0).getResults().get(0).getWordAlternatives();
for (WordAlternativeResults alternativeResults : wordAlternatives) {
assertTrue(alternativeResults.getAlternatives().get(0).getConfidence() >= wordAlternativesThreshold);
}
} finally {
DeleteJobOptions deleteOptions = new DeleteJobOptions.Builder().id(job.getId()).build();
service.deleteJob(deleteOptions).execute();
}
}
use of com.ibm.watson.developer_cloud.speech_to_text.v1.model.CreateJobOptions in project java-sdk by watson-developer-cloud.
the class SpeechToText method createJob.
/**
* Creates a job for an asynchronous recognition request.
*
* Creates a job for a new asynchronous recognition request. The job is owned by the user whose service credentials
* are used to create it. How you learn the status and results of a job depends on the parameters you include with the
* job creation request: * By callback notification: Include the `callback_url` query parameter to specify a URL to
* which the service is to send callback notifications when the status of the job changes. Optionally, you can also
* include the `events` and `user_token` query parameters to subscribe to specific events and to specify a string that
* is to be included with each notification for the job. * By polling the service: Omit the `callback_url`, `events`,
* and `user_token` query parameters. You must then use the `GET /v1/recognitions` or `GET /v1/recognitions/{id}`
* methods to check the status of the job, using the latter to retrieve the results when the job is complete. The two
* approaches are not mutually exclusive. You can poll the service for job status or obtain results from the service
* manually even if you include a callback URL. In both cases, you can include the `results_ttl` parameter to specify
* how long the results are to remain available after the job is complete. Note that using the HTTPS `GET
* /v1/recognitions/{id}` method to retrieve results is more secure than receiving them via callback notification over
* HTTP because it provides confidentiality in addition to authentication and data integrity. The method supports the
* same basic parameters as other HTTP and WebSocket recognition requests. The service imposes a data size limit of
* 100 MB. It automatically detects the endianness of the incoming audio and, for audio that includes multiple
* channels, downmixes the audio to one-channel mono during transcoding. (For the `audio/l16` format, you can specify
* the endianness.).
*
* @param createJobOptions the {@link CreateJobOptions} containing the options for the call
* @return a {@link ServiceCall} with a response type of {@link RecognitionJob}
*/
public ServiceCall<RecognitionJob> createJob(CreateJobOptions createJobOptions) {
Validator.notNull(createJobOptions, "createJobOptions cannot be null");
String[] pathSegments = { "v1/recognitions" };
RequestBuilder builder = RequestBuilder.post(RequestBuilder.constructHttpUrl(getEndPoint(), pathSegments));
builder.header("Content-Type", createJobOptions.contentType());
if (createJobOptions.model() != null) {
builder.query("model", createJobOptions.model());
}
if (createJobOptions.callbackUrl() != null) {
builder.query("callback_url", createJobOptions.callbackUrl());
}
if (createJobOptions.events() != null) {
builder.query("events", createJobOptions.events());
}
if (createJobOptions.userToken() != null) {
builder.query("user_token", createJobOptions.userToken());
}
if (createJobOptions.resultsTtl() != null) {
builder.query("results_ttl", String.valueOf(createJobOptions.resultsTtl()));
}
if (createJobOptions.customizationId() != null) {
builder.query("customization_id", createJobOptions.customizationId());
}
if (createJobOptions.acousticCustomizationId() != null) {
builder.query("acoustic_customization_id", createJobOptions.acousticCustomizationId());
}
if (createJobOptions.customizationWeight() != null) {
builder.query("customization_weight", String.valueOf(createJobOptions.customizationWeight()));
}
if (createJobOptions.version() != null) {
builder.query("version", createJobOptions.version());
}
if (createJobOptions.inactivityTimeout() != null) {
builder.query("inactivity_timeout", String.valueOf(createJobOptions.inactivityTimeout()));
}
if (createJobOptions.keywords() != null) {
builder.query("keywords", RequestUtils.join(createJobOptions.keywords(), ","));
}
if (createJobOptions.keywordsThreshold() != null) {
builder.query("keywords_threshold", String.valueOf(createJobOptions.keywordsThreshold()));
}
if (createJobOptions.maxAlternatives() != null) {
builder.query("max_alternatives", String.valueOf(createJobOptions.maxAlternatives()));
}
if (createJobOptions.wordAlternativesThreshold() != null) {
builder.query("word_alternatives_threshold", String.valueOf(createJobOptions.wordAlternativesThreshold()));
}
if (createJobOptions.wordConfidence() != null) {
builder.query("word_confidence", String.valueOf(createJobOptions.wordConfidence()));
}
if (createJobOptions.timestamps() != null) {
builder.query("timestamps", String.valueOf(createJobOptions.timestamps()));
}
if (createJobOptions.profanityFilter() != null) {
builder.query("profanity_filter", String.valueOf(createJobOptions.profanityFilter()));
}
if (createJobOptions.smartFormatting() != null) {
builder.query("smart_formatting", String.valueOf(createJobOptions.smartFormatting()));
}
if (createJobOptions.speakerLabels() != null) {
builder.query("speaker_labels", String.valueOf(createJobOptions.speakerLabels()));
}
builder.body(InputStreamRequestBody.create(MediaType.parse(createJobOptions.contentType()), createJobOptions.audio()));
return createServiceCall(builder.build(), ResponseConverterUtils.getObject(RecognitionJob.class));
}
Aggregations