|
9 | 9 | using Microsoft.Extensions.AI;
|
10 | 10 |
|
11 | 11 | Console.WriteLine("Reading key from environment variable DASHSCOPE_KEY");
|
12 |
| -var apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_API_KEY"); |
| 12 | +var apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_KEY", EnvironmentVariableTarget.Process) |
| 13 | + ?? Environment.GetEnvironmentVariable("DASHSCOPE_KEY", EnvironmentVariableTarget.User); |
13 | 14 | if (string.IsNullOrEmpty(apiKey))
|
14 | 15 | {
|
15 | 16 | Console.Write("ApiKey > ");
|
|
63 | 64 | userInput = Console.ReadLine()!;
|
64 | 65 | await ApplicationCallAsync(applicationId, userInput);
|
65 | 66 | break;
|
| 67 | + case SampleType.TextToSpeech: |
| 68 | + { |
| 69 | + using var tts = await dashScopeClient.CreateSpeechSynthesizerSocketSessionAsync("cosyvoice-v2"); |
| 70 | + var taskId = await tts.RunTaskAsync( |
| 71 | + new SpeechSynthesizerParameters { Voice = "longxiaochun_v2", Format = "mp3" }); |
| 72 | + await tts.ContinueTaskAsync(taskId, "博客园"); |
| 73 | + await tts.ContinueTaskAsync(taskId, "代码改变世界"); |
| 74 | + await tts.FinishTaskAsync(taskId); |
| 75 | + var file = new FileInfo("tts.mp3"); |
| 76 | + var writer = file.OpenWrite(); |
| 77 | + await foreach (var b in tts.GetAudioAsync()) |
| 78 | + { |
| 79 | + writer.WriteByte(b); |
| 80 | + } |
| 81 | + |
| 82 | + writer.Close(); |
| 83 | + |
| 84 | + var tokenUsage = 0; |
| 85 | + await foreach (var message in tts.GetMessagesAsync()) |
| 86 | + { |
| 87 | + if (message.Payload.Usage?.Characters > tokenUsage) |
| 88 | + { |
| 89 | + tokenUsage = message.Payload.Usage.Characters; |
| 90 | + } |
| 91 | + } |
| 92 | + |
| 93 | + Console.WriteLine($"audio saved to {file.FullName}, token usage: {tokenUsage}"); |
| 94 | + break; |
| 95 | + } |
66 | 96 | }
|
67 | 97 |
|
68 | 98 | return;
|
|
0 commit comments