-
-
Notifications
You must be signed in to change notification settings - Fork 30
Expand file tree
/
Copy pathTestFixture_04_TextToSpeechEndpoint.cs
More file actions
145 lines (138 loc) · 6.85 KB
/
TestFixture_04_TextToSpeechEndpoint.cs
File metadata and controls
145 lines (138 loc) · 6.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
// Licensed under the MIT License. See LICENSE in the project root for license information.
using ElevenLabs.TextToSpeech;
using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace ElevenLabs.Tests
{
internal class TestFixture_04_TextToSpeechEndpoint : AbstractTestFixture
{
[Test]
public async Task Test_01_TextToSpeech()
{
Assert.NotNull(ElevenLabsClient.TextToSpeechEndpoint);
var voice = Voices.Voice.Adam;
Assert.NotNull(voice);
var request = new TextToSpeechRequest(voice, "The quick brown fox jumps over the lazy dog.");
var voiceClip = await ElevenLabsClient.TextToSpeechEndpoint.TextToSpeechAsync(request);
Assert.NotNull(voiceClip);
Console.WriteLine(voiceClip.Id);
}
[Test]
public async Task Test_02_StreamTextToSpeech()
{
Assert.NotNull(ElevenLabsClient.TextToSpeechEndpoint);
var voice = (await ElevenLabsClient.VoicesEndpoint.GetAllVoicesAsync()).FirstOrDefault();
Assert.NotNull(voice);
var partialClips = new Queue<VoiceClip>();
var request = new TextToSpeechRequest(voice, "The quick brown fox jumps over the lazy dog.", outputFormat: OutputFormat.PCM_24000);
var voiceClip = await ElevenLabsClient.TextToSpeechEndpoint.TextToSpeechAsync(request, async partialClip =>
{
Assert.IsNotNull(partialClip);
partialClips.Enqueue(partialClip);
await Task.CompletedTask;
});
Assert.NotNull(partialClips);
Assert.IsNotEmpty(partialClips);
Assert.NotNull(voiceClip);
Console.WriteLine(voiceClip.Id);
}
[Test]
public async Task Test_03_TextToSpeech_Transcription()
{
Assert.NotNull(ElevenLabsClient.TextToSpeechEndpoint);
var voice = Voices.Voice.Adam;
Assert.NotNull(voice);
var request = new TextToSpeechRequest(voice, "The quick brown fox jumps over the lazy dog.", withTimestamps: true);
var voiceClip = await ElevenLabsClient.TextToSpeechEndpoint.TextToSpeechAsync(request);
Assert.NotNull(voiceClip);
Console.WriteLine(voiceClip.Id);
Assert.NotNull(voiceClip.TimestampedTranscriptCharacters);
Assert.IsNotEmpty(voiceClip.TimestampedTranscriptCharacters);
Console.WriteLine("| Character | Start Time | End Time |");
Console.WriteLine("| --------- | ---------- | -------- |");
foreach (var character in voiceClip.TimestampedTranscriptCharacters)
{
Console.WriteLine($"| {character.Character} | {character.StartTime} | {character.EndTime} |");
}
}
[Test]
public async Task Test_04_StreamTextToSpeech_Transcription()
{
Assert.NotNull(ElevenLabsClient.TextToSpeechEndpoint);
var voice = Voices.Voice.Adam;
Assert.NotNull(voice);
voice.Settings ??= await ElevenLabsClient.VoicesEndpoint.GetDefaultVoiceSettingsAsync();
var partialClips = new Queue<VoiceClip>();
var characters = new Queue<TimestampedTranscriptCharacter>();
Console.WriteLine("| Character | Start Time | End Time |");
Console.WriteLine("| --------- | ---------- | -------- |");
var request = new TextToSpeechRequest(voice, "The quick brown fox jumps over the lazy dog.", outputFormat: OutputFormat.PCM_24000, withTimestamps: true);
var voiceClip = await ElevenLabsClient.TextToSpeechEndpoint.TextToSpeechAsync(request, async partialClip =>
{
Assert.IsNotNull(partialClip);
partialClips.Enqueue(partialClip);
await Task.CompletedTask;
foreach (var character in partialClip.TimestampedTranscriptCharacters)
{
characters.Enqueue(character);
Console.WriteLine($"| {character.Character} | {character.StartTime} | {character.EndTime} |");
}
});
Assert.NotNull(partialClips);
Assert.NotNull(partialClips);
Assert.IsNotEmpty(partialClips);
Assert.NotNull(voiceClip);
Console.WriteLine(voiceClip.Id);
Assert.AreEqual(characters.ToArray(), voiceClip.TimestampedTranscriptCharacters);
}
[Test]
public async Task Test_05_01_LanguageEnforced_TextToSpeech()
{
Assert.NotNull(ElevenLabsClient.TextToSpeechEndpoint);
var voice = Voices.Voice.Adam;
Assert.NotNull(voice);
var partialClips = new Queue<VoiceClip>();
var characters = new Queue<TimestampedTranscriptCharacter>();
Console.WriteLine("| Character | Start Time | End Time |");
Console.WriteLine("| --------- | ---------- | -------- |");
var request = new TextToSpeechRequest(voice, "The quick brown fox jumps over the lazy dog.", outputFormat: OutputFormat.PCM_24000, withTimestamps: true);
var voiceClip = await ElevenLabsClient.TextToSpeechEndpoint.TextToSpeechAsync(request, async partialClip =>
{
await Task.CompletedTask;
partialClips.Enqueue(partialClip);
foreach (var character in partialClip.TimestampedTranscriptCharacters)
{
characters.Enqueue(character);
Console.WriteLine($"| {character.Character} | {character.StartTime} | {character.EndTime} |");
}
});
Assert.NotNull(partialClips);
Assert.NotNull(partialClips);
Assert.IsNotEmpty(partialClips);
Assert.NotNull(voiceClip);
Console.WriteLine(voiceClip.Id);
Assert.AreEqual(characters.ToArray(), voiceClip.TimestampedTranscriptCharacters);
}
[Test]
public async Task Test_05_02_TurboV2_5_LanguageEnforced_TextToSpeech()
{
Assert.NotNull(ElevenLabsClient.TextToSpeechEndpoint);
var voice = Voices.Voice.Adam;
Assert.NotNull(voice);
var defaultVoiceSettings = await ElevenLabsClient.VoicesEndpoint.GetDefaultVoiceSettingsAsync();
var request = new TextToSpeechRequest(
voice: voice,
text: "Příliš žluťoučký kůň úpěl ďábelské ódy",
voiceSettings: defaultVoiceSettings,
model: Models.Model.TurboV2_5,
outputFormat: OutputFormat.MP3_44100_192,
languageCode: "cs");
var voiceClip = await ElevenLabsClient.TextToSpeechEndpoint.TextToSpeechAsync(request);
Assert.NotNull(voiceClip);
Console.WriteLine(voiceClip.Id);
}
}
}