示例#1
0
 public Task <HealthCheckResult> CheckHealthAsync(
     HealthCheckContext context, CancellationToken cancellationToken = default)
 {
     if (_yngpingAudioSynthesizer.YngpingToAudio("a242") == null)
     {
         return(Task.FromResult(HealthCheckResult.Unhealthy("Cannot pronounce a242.")));
     }
     return(Task.FromResult(HealthCheckResult.Healthy("Can pronounce a242.")));
 }
示例#2
0
        public async Task <IActionResult> GetAudio(string text)
        {
            var    dotPosition = text.LastIndexOf(".");
            string yngping;
            string ext;

            if (dotPosition != -1)
            {
                yngping = text.Substring(0, dotPosition);
                ext     = text.Substring(dotPosition + 1).ToLowerInvariant().Trim();
            }
            else
            {
                yngping = text;
                ext     = "wav";
            }
            if (!SupportedFormats.Contains(ext))
            {
                return(new UnsupportedMediaTypeResult());
            }
            var audioBytes = audioSynthesizer.YngpingToAudio(yngping);

            if (audioBytes == null)
            {
                logger.LogDebug($"Unsupported yngping: {yngping}");
                return(new NotFoundResult());
            }
            switch (ext)
            {
            case "wav":
                return(new FileContentResult(audioBytes, "audio/wav"));

            case "mp3":
                return(new FileContentResult(await AudioConversion.WavToMp3(audioBytes), "audio/mp3"));

            default:
                throw new Exception("Should not have reached here.");
            }
        }