Esempio n. 1
0
        private async Task <string> GetVoiceSignatureString()
        {
            var audioStream = new MemoryStream();
            var writer      = new WaveDataWriterClass(audioStream, WaveFormat.Create16kHz1Channel16BitPcm());

            using (var p = Pipeline.Create())
            {
                var capture = new AudioCapture(p, WaveFormat.Create16kHz1Channel16BitPcm());
                capture.Do(audio => writer.Write(audio.Data.DeepClone()));
                p.RunAsync();
                await Task.Delay(5000);

                writer.Flush();
            }

            var content = new ByteArrayContent(audioStream.GetBuffer(), 0, (int)audioStream.Length);
            var client  = new HttpClient();

            client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", this.SubscriptionKey);
            var response = await client.PostAsync($"https://signature.{this.Region}.cts.speech.microsoft.com/api/v1/Signature/GenerateVoiceSignatureFromByteArray", content);

            var jsonData = await response.Content.ReadAsStringAsync();

            var result = JsonConvert.DeserializeObject <VoiceSignature>(jsonData);

            return(JsonConvert.SerializeObject(result.Signature));
        }
Esempio n. 2
0
        /// <summary>
        /// Creates a RIFF header for the supplied WaveFormat object.
        /// </summary>
        /// <param name="format">The WaveFormat object.</param>
        /// <returns>A byte array containing the RIFF header.</returns>
        private static byte[] CreateRiffHeader(WaveFormat format)
        {
            var formatStream = new MemoryStream();

            // Use the helper WaveDataWriterClass to write the RIFF header to a MemoryStream
            using (var waveDataWriter = new WaveDataWriterClass(formatStream, format))
            {
                // Since we only want the header, we don't need to write any data. The header has
                // already been written to the MemoryStream so we can just return the stream bytes.
                return(formatStream.ToArray());
            }
        }