- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法在 AWS .NET SDK 中找到任何关于转录流服务(从语音到文本)的引用。
它在 .NET SDK Amazon Transcribe Streaming Service 中可用吗?任何引用资料都会有所帮助
最佳答案
这就是我的做法:
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Threading.Tasks;
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using Amazon.TranscribeService;
using Amazon.TranscribeService.Model;
using Newtonsoft.Json;
using QuickScreenHelper;
namespace CognitiveFace.Speech
{
public class AwsSpeech : IDisposable
{
public AwsSpeech(RegionEndpoint regionEndpoint = null)
{
RegionEndpoint = regionEndpoint ?? RegionEndpoint.APNortheast1;
//todo add region endpoint for AWS Face
S3Client = new AmazonS3Client(RegionEndpoint);
TranscribeClient = new AmazonTranscribeServiceClient(RegionEndpoint);
}
private RegionEndpoint RegionEndpoint { get; }
private AmazonTranscribeServiceClient TranscribeClient { get; }
private AmazonS3Client S3Client { get; }
public void Dispose()
{
//TODO remember to call
S3Client.Dispose();
TranscribeClient.Dispose();
//TODO dispose for faceClient
//todo dispose for gcp speech and azure speech
}
public async Task TranscribeInputFile(string fileName, string targetLanguageCode = "ja-JP")
{
var bucketName = "transcribe-" + Guid.NewGuid();
var putBucketResponse = await CreateBucket(bucketName);
if (putBucketResponse.HttpStatusCode == HttpStatusCode.OK)
{
var uploadInputFileToS3 = await UploadInputFileToS3(fileName, bucketName);
if (uploadInputFileToS3.HttpStatusCode == HttpStatusCode.OK)
{
var startTranscriptionJobResponse =
await TranscribeInputFile(fileName, bucketName, targetLanguageCode);
//todo
//todo delete bucket
}
else
{
Logger.WriteLine($"Fail to transcribe {fileName} because cannot upload {fileName} to {bucketName}",
uploadInputFileToS3);
}
}
else
{
Logger.WriteLine($"Fail to transcribe {fileName} because cannot create bucket {bucketName}",
putBucketResponse);
}
}
private async Task<TranscriptionJobResult> TranscribeInputFile(string fileName, string bucketName,
string targetLanguageCode)
{
var objectName = Path.GetFileName(fileName);
var media = new Media()
{
MediaFileUri = $"https://s3.{RegionEndpoint.SystemName}.amazonaws.com/{bucketName}/{objectName}"
};
var transcriptionJobName = $"transcribe-job-{bucketName}";
var transcriptionJobRequest = new StartTranscriptionJobRequest()
{
LanguageCode = targetLanguageCode,
Media = media,
MediaFormat = MediaFormat.Wav,
TranscriptionJobName = transcriptionJobName,
OutputBucketName = bucketName
};
var startTranscriptionJobResponse =
await TranscribeClient.StartTranscriptionJobAsync(transcriptionJobRequest);
if (startTranscriptionJobResponse.HttpStatusCode == HttpStatusCode.OK)
{
return await WaitForTranscriptionJob(startTranscriptionJobResponse.TranscriptionJob, bucketName);
}
else
{
//todo
throw new NotImplementedException();
}
}
private async Task<TranscriptionJobResult> WaitForTranscriptionJob(TranscriptionJob transcriptionJob,
string bucketName, int delayTime = 16000)
{
var transcriptionJobTranscriptionJobStatus = transcriptionJob.TranscriptionJobStatus;
Logger.WriteLine($"transcriptionJobTranscriptionJobStatus={transcriptionJobTranscriptionJobStatus}");
if (transcriptionJobTranscriptionJobStatus ==
TranscriptionJobStatus.COMPLETED)
{
var keyName = $"{transcriptionJob.TranscriptionJobName}.json";
Logger.WriteLine($"Downloading {keyName}");
var result = await GetFileFromS3(keyName, bucketName);
return JsonConvert.DeserializeObject<TranscriptionJobResult>(result);
/*using var stringReader = new StringReader(result);
using var jsonTextReader = new JsonTextReader(stringReader);*/
}
else if (transcriptionJobTranscriptionJobStatus == TranscriptionJobStatus.FAILED)
{
//TODO
throw new NotImplementedException();
}
else
{
await Task.Delay(delayTime);
var getTranscriptionJobResponse = await TranscribeClient.GetTranscriptionJobAsync(
new GetTranscriptionJobRequest()
{
TranscriptionJobName = transcriptionJob.TranscriptionJobName
});
return await WaitForTranscriptionJob(getTranscriptionJobResponse.TranscriptionJob, bucketName,
delayTime * 2);
}
}
public async Task<PutBucketResponse> CreateBucket(string bucketName)
{
var putBucketRequest = new PutBucketRequest()
{
BucketName = bucketName,
};
return await S3Client.PutBucketAsync(putBucketRequest);
}
public async Task<PutObjectResponse> UploadInputFileToS3(string fileName, string bucketName)
{
var objectName = Path.GetFileName(fileName);
var putObjectRequest = new PutObjectRequest
{
BucketName = bucketName,
Key = objectName,
ContentType = "audio/wav",
FilePath = fileName
};
return await S3Client.PutObjectAsync(putObjectRequest);
}
public async Task<string> GetFileFromS3(string keyName, string bucketName)
{
var request = new GetObjectRequest()
{
BucketName = bucketName,
Key = keyName
};
using var response = await S3Client.GetObjectAsync(request);
using var responseStream = response.ResponseStream;
using var reader = new StreamReader(responseStream);
/*string title = response.Metadata["x-amz-meta-title"]; // Assume you have "title" as medata added to the object.
string contentType = response.Headers["Content-Type"];
Console.WriteLine("Object metadata, Title: {0}", title);
Console.WriteLine("Content type: {0}", contentType);*/
return await reader.ReadToEndAsync(); // Now you process the response body.
}
}
//todo move
public class TranscriptionJobResult
{
public string jobName { get; set; }
public string accountId { get; set; }
public string status { get; set; }
public TranscriptionResult results { get; set; }
}
public class TranscriptionResult
{
public List<Transcript> transcripts { get; set; }
public List<TranscriptItem> items { get; set; }
}
public class Transcript
{
public string transcript { get; set; }
}
public class TranscriptItem
{
public string start_time { get; set; }
public string end_time { get; set; }
public List<AlternativeTranscription> alternatives { get; set; }
public string type { get; set; }
}
public class AlternativeTranscription
{
public string confidence { get; set; }
public string content { get; set; }
}
}
关于.net - Amazon Transcribe Streaming Service Speech to Text for .NET SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54303167/
我有 wav 格式的 6 秒录音 (ar-01.wav)。我想使用亚马逊服务将音频文件转录为文本。为此,我创建了一个名为 test-voip 的存储桶,并将音频文件上传到存储桶。当我尝试将语音转换为文
我目前有代码: public class ProviderTranscribeController { private AmazonTranscribe client = Amazon
我从亚马逊流媒体 API 收到此响应。谁能帮我解决我在这里做错了什么。 b'\x00\x00\x00\xa3\x00\x00\x00ah\x10k\xe1\x0f:异常类型\x07\x00\x13Ba
嗨,我是AWS的新手。我的应用程序是使用AWS transcribe录制音频并将语音转换为文本。 因此,我正在从Web浏览器录制音频,然后将其保存到AWS S3。稍后,当我尝试在该音频文件上使用AWS
我想使用 AWS Transcribe API 将用户的实时语音转换为文本。出于某种原因,没有关于如何在 android 中完成的适当文档。 这是以低效方式执行此操作的链接 Speech to tex
我是否需要删除使用 Amazon Transcribe 服务创建的一些转录作业? 我第一次使用 amazon transcribe 从视频中获取文本,它工作正常,但我没有找到任何如何删除特定转录作业的
我是 AWS 服务的新手,我们想要构建一个简单的演示来检测一个特殊的词,并且:[1] 触发一个 Action [2] 响应(作为通话期间的语音)。 例如,如果用户说:“帮助”,我想回复“确定”并进行操
我使用无服务器 Lambda 服务通过 Amazon Transcribe 将语音转录为文本。我当前的脚本能够从 S3 转录文件并将结果作为 JSON 文件存储在 S3 中。 是否有可能直接获取结果,
我使用无服务器 Lambda 服务通过 Amazon Transcribe 将语音转录为文本。我当前的脚本能够从 S3 转录文件并将结果作为 JSON 文件存储在 S3 中。 是否有可能直接获取结果,
当 AWS Transcribe 仍在进行流式传输时,isPartial 标志将设置为 True。我想在 isPartial 标志设置为 False 后停止流传输,该怎么做? 有人做过吗? https
我已将 AWS Java SDK 集成到我的应用程序中。不幸的是,我收到“内部故障。请重试您的请求”作为响应。 这就是我实现它的方式。 使用 Maven,在 pom.xml 中添加此内容
我正在尝试使用 aws-sdk-ios 在 iOS 应用程序中使用 AWS Transcribe。该应用程序启动转录作业,我可以在 AWS 控制台上看到该作业。但应用程序无法列出作业或获取特定作业,因
我无法在 AWS .NET SDK 中找到任何关于转录流服务(从语音到文本)的引用。 它在 .NET SDK Amazon Transcribe Streaming Service 中可用吗?任何引用
尝试找到一个包来转换来自 Amazon AWS Transcribe 服务的 json 响应,但没有成功。 您可以看到an example of the JSON in the JavaScript
我正在尝试使用 AWS Java 开发工具包开发一个使用 Amazon Transcribe 服务的 ColdFusion 应用程序。不幸的是,我对 Java 的了解很少(更不用说 SDK 本身了),
我正在使用 IBM Watson speech to text iOS SDK 来转录实时音频。我已经通过 cocoa pod 安装了它。我在将音频转录为文本时遇到问题(身份验证)。 安装的STT S
我正在尝试使用来自 Go 1.11 的 Amazon 新的流式转录 API。目前亚马逊只提供Java SDK,所以我正在尝试低级方式。 唯一相关的文档是 here但它没有显示端点。我在 Java ex
我正在尝试确定 AWS Lex 是否使用 AWS Transcribe 进行提示确认。例如,Lex 询问“你的电话号码是什么?”,用户回答“1-2-3-4”。 Lex 然后问道:“你是说 1-2-3-
我正在尝试确定 AWS Lex 是否使用 AWS Transcribe 进行提示确认。例如,Lex 询问“你的电话号码是什么?”,用户回答“1-2-3-4”。 Lex 然后问道:“你是说 1-2-3-
我正在尝试将 Amazon Transcribe Streaming Service 与来自 Node.js 的 http2 请求一起使用,这是我正在关注的文档链接 Streaming request
我是一名优秀的程序员,十分优秀!