blob: 8248b02a7969805a2c19c99123fc774dc822f949 [file] [log] [blame]
syntax = "proto2";
package google.internal.communications.voicemailtranscription.v1;
option java_multiple_files = true;
option optimize_for = LITE_RUNTIME;
option java_package = "com.google.internal.communications.voicemailtranscription.v1";
// Enum that specifies supported audio formats.
enum AudioFormat {
// Default but invalid value.
AUDIO_FORMAT_UNSPECIFIED = 0;
// Adaptive Multi-Rate Narrowband, 8kHz sampling frequency.
// https://en.wikipedia.org/wiki/Adaptive_Multi-Rate_audio_codec
AMR_NB_8KHZ = 1;
}
// Enum that describes the status of the transcription process.
enum TranscriptionStatus {
// Default but invalid value.
TRANSCRIPTION_STATUS_UNSPECIFIED = 0;
// Transcription was successful and the transcript is present.
SUCCESS = 1;
// Transcription is progress. Check again later.
PENDING = 2;
// Transcription was successful, but the expiration period has passed, which
// means that the sensative data (including the transcript) has been deleted.
// Resend the voicemail through TranscribeVoicemailAsync to retry.
EXPIRED = 3;
// Internal error encountered during the transcription.
// Resend the voicemail through TranscribeVoicemailAsync to retry.
// This is a catch-all status for all retriable errors that aren't captured by
// a more specfic status.
FAILED_RETRY = 4;
// Internal error encountered during the transcription.
// Do not resend the voicemail.
// This is a catch-all status for all non-retriable errors that aren't
// captured by a more specfic status.
FAILED_NO_RETRY = 5;
// The language detected is not yet supported by this service.
// Do not resend the voicemail.
FAILED_LANGUAGE_NOT_SUPPORTED = 6;
// No speech was detected in the voicemail.
// Do not resend the voicemail.
FAILED_NO_SPEECH_DETECTED = 7;
}
// Enum that specifies the user's consent to donate a specific voicemail.
enum DonationPreference {
// Default but invalid value.
USER_PREFERENCE_UNSPECIFIED = 0;
// User does not consent to donating this voicemail.
DO_NOT_DONATE = 1;
// User consents to donating this voicemail.
DONATE = 2;
}
// Enum that specifies the user's rating for a voicemail transcription.
enum TranscriptionRatingValue {
// Default but invalid value.
TRANSCRIPTION_RATING_VALUE_UNSPECIFIED = 0;
// User indicated that the transcription was good.
GOOD_TRANSCRIPTION = 1;
// User indicated that the transcription was bad.
BAD_TRANSCRIPTION = 2;
}
// Request for synchronous voicemail transcription.
message TranscribeVoicemailRequest {
// Voicemail audio file containing the raw bytes we receive from the carrier.
optional bytes voicemail_data = 1;
// Audio format of the voicemail file.
optional AudioFormat audio_format = 2;
}
// Response for synchronous voicemail transcription.
message TranscribeVoicemailResponse {
// The transcribed text of the voicemail.
optional string transcript = 1;
}
// Request for asynchronous voicemail transcription.
message TranscribeVoicemailAsyncRequest {
// Voicemail audio data encoded in the format specified by audio_format.
optional bytes voicemail_data = 1;
// Audio format of the voicemail file.
optional AudioFormat audio_format = 2;
// The client may provide their own unique ID for this transcription. It
// should be globally unique across all voicemails from all users.
// If the given transcription_id is not unique, an ALREADY_EXISTS (409) error
// will be returned.
// If no transcription_id is provided, one will be generated by the server.
optional string transcription_id = 3;
// User's donation preference.
optional DonationPreference donation_preference = 4;
}
// Response for asynchronous voicemail transcription containing information
// needed to fetch the transcription results through the GetTranscript method.
message TranscribeVoicemailAsyncResponse {
// Unique ID for the transcription. This ID is used for retrieving the
// voicemail transcript later.
optional string transcription_id = 1;
// The estimated amount of time in seconds before the transcription will be
// available.
// The client should not call GetTranscript until this time has elapsed, but
// the transcript is not guaranteed to be ready by this time.
optional int64 estimated_wait_secs = 2;
}
// Request for retrieving an asynchronously generated transcript.
message GetTranscriptRequest {
// Unique ID for the transcription. This ID was returned by
// TranscribeVoicemailAsync.
optional string transcription_id = 1;
}
// Response for retrieving an asynchronously generated transcript.
message GetTranscriptResponse {
// Status of the trascription process.
optional TranscriptionStatus status = 1;
// The transcribed text of the voicemail. This is only present if the status
// is SUCCESS.
optional string transcript = 2;
}
// The rating for a single voicemail transcription.
message TranscriptionRating {
// The id of the voicemail transcription.
optional string transcription_id = 1;
// The user's rating of the voicemail transcription.
optional TranscriptionRatingValue rating_value = 2;
}
// Request for uploading transcription ratings.
message SendTranscriptionFeedbackRequest {
// User feedback indicating the transcription quality for one or more
// voicemails
repeated TranscriptionRating rating = 1;
}
// Response for uploading transcription ratings
message SendTranscriptionFeedbackResponse {
}
// RPC service for transcribing voicemails.
service VoicemailTranscriptionService {
// Returns a transcript of the given voicemail.
rpc TranscribeVoicemail(TranscribeVoicemailRequest)
returns (TranscribeVoicemailResponse) {}
// Schedules a transcription of the given voicemail. The transcript can be
// retrieved using the returned ID.
rpc TranscribeVoicemailAsync(TranscribeVoicemailAsyncRequest)
returns (TranscribeVoicemailAsyncResponse) {
}
// Returns the transcript corresponding to the given ID, which was returned
// by TranscribeVoicemailAsync.
rpc GetTranscript(GetTranscriptRequest) returns (GetTranscriptResponse) {
}
// Uploads user's transcription feedback. Feedback will only be collected from
// user's who have consented to donate their voicemails.
rpc SendTranscriptionFeedback(SendTranscriptionFeedbackRequest)
returns (SendTranscriptionFeedbackResponse) {
}
}