text-to-speech 相关问题

文本到语音或语音合成是人类语音的人工产生。

getVoices()在同一系统上返回不同的声音

Https://developer.mozilla.org/en-us/docs/web/api/speechsynthesis/getvoices

回答 0 投票 0



使用Google双向流tts

有任何方法可以在双向TTS流响应的特定位置手动添加暂停?因此,在Google Cloud的文档页面上,他们具有以下示例代码: def

回答 1 投票 0

我在使用pytorch上在GPU上运行TTS(文本到语音)模型时遇到以下错误:

当使用螺纹快速连续提出多个请求时,就会发生这个问题。当请求被分开(即单个或较慢的顺序请求)时,该函数可以按预期工作,并且没有错误。但是,当多个线程同时处理文本时,错误会触发不一致。 我用来将文本分为较小的部分,将其合成为音频,并将结果保存为WAV文件:

回答 0 投票 0

java文本到语音api

https://code.google.com/p/java-google-google-translate-translate-text-text-to-poech/

回答 2 投票 0

flutter_tts不在ios

flutter_tts

回答 4 投票 0



深编剧在流式传输到twilio呼叫的声音裁剪时的语音文字

IM流从深色呼叫到TWLIO调用,但音频声音裁剪出来。 例子: 你好。什么。是。你的。姓名。 ? 而不是你好,你叫什么名字? 我与ElevenLabs的类似代码完美效果。

回答 1 投票 0

最终创建文本到语音语音变体的最佳方式

我至少需要3/4个不同的TTS声音,但不幸的是,我只有一个声音。 这是因为我只有一个意大利神经声音(迭戈),而其他人都是标准的声音和质量...

回答 1 投票 0

video,没有音频。 我正在为Android开发.NET 9 MAUI移动应用。此应用程序包括一个页面,我在XAML页面中加载HybridWebView:

<StackLayout Grid.Row="0" Orientation="Horizontal" VerticalOptions="Center" Margin="0,10,0,10"> <Grid RowDefinitions="Auto,*" ColumnDefinitions="*" MaximumWidthRequest="400" MaximumHeightRequest="1000"> <HybridWebView x:Name="hybridWebView" RawMessageReceived="OnHybridWebViewRawMessageReceived" Grid.Row="1" /> </Grid> </StackLayout> var result = await hybridWebView.InvokeJavaScriptAsync("speak", HybridJsContext.Default.DictionaryStringString, [com.Message, Controllers.CurrentLanguage], [HybridJsContext.Default.String, HybridJsContext.Default.String]); 现在在我的index.html页面中我使用此html代码: <div class="avatar-container"> <div id="videoContainer"> <div id="overlayArea" style="position: absolute; top: 0; left: 0;" hidden="hidden"> <p id="overlayText" style="font-size: large;"></p> <img id="overlayImage" src="your-image-source.png" alt="Overlay Image"> </div> <div id="remoteVideo"></div> <canvas id="canvas" width="1920" height="1080" style="background-color: transparent; background-image: url('AvatarBackground.jpg'); background-size: cover; background-position: center;" hidden="hidden"></canvas> <canvas id="tmpCanvas" width="1920" height="1080" hidden="hidden"></canvas> </div> </div> 和此脚本: if (typeof SpeechSDK === "undefined") { console.log("INFO FROM INDEX.HTML: ERROR-IN-SCRIPT: Speech SDK is not loaded.", "color: red; font-size: 16px;"); } else { window.speechConfig = SpeechSDK.SpeechConfig.fromSubscription("[SUBSCRIPTIONKEY]", "[REGION]"); window.avatarConfig = new SpeechSDK.AvatarConfig("lisa", "casual-sitting"); window.peerConnection = new RTCPeerConnection({ iceServers: [{ urls: ["[TURN-URL-AND-PORT]"], username: "[USERNAME]", credential: "[CREDENTIALS]" }] }); // Log connection state changes window.peerConnection.oniceconnectionstatechange = function () { console.log("INFO FROM INDEX.HTML: ICE Connection State: " + window.peerConnection.iceConnectionState, "color: orange; font-size: 14px;"); if (window.peerConnection.iceConnectionState === 'connected') { console.log("INFO FROM INDEX.HTML: TURN server connection established.", "color: green; font-size: 14px;"); } else if (window.peerConnection.iceConnectionState === 'failed') { console.error("ERROR FROM INDEX.HTML: TURN server connection failed.", "color: red; font-size: 14px;"); } }; window.peerConnection.ontrack = function (event) { console.log("INFO FROM INDEX.HTML: Track received: " + event.track.kind, "color: blue; font-size: 14px;"); if (event.track.kind === 'video') { const videoElement = document.createElement('video'); videoElement.srcObject = event.streams[0]; videoElement.autoplay = true; videoElement.muted = true; // Add this line to enable autoplay videoElement.playsInline = true; // For iOS videoElement.style.width = '100%'; window.remoteVideoDiv = document.getElementById('remoteVideo'); remoteVideoDiv.innerHTML = ''; remoteVideoDiv.appendChild(videoElement); console.info("INFO FROM INDEX.HTML: Video element appended.", "color: green; font-size: 12px;"); } if (event.track.kind === 'audio') { window.audioElement = document.createElement('audio'); audioElement.srcObject = event.streams[0]; audioElement.autoplay = true; audioElement.muted = true; document.body.appendChild(audioElement); console.info("INFO FROM INDEX.HTML: cAudio element appended.", "color: green; font-size: 12px;"); } }; window.peerConnection.addTransceiver('video', { direction: 'sendrecv' }); window.peerConnection.addTransceiver('audio', { direction: 'sendrecv' }); window.avatarSynthesizer = new SpeechSDK.AvatarSynthesizer(window.speechConfig, window.avatarConfig); window.avatarSynthesizer.startAvatarAsync(window.peerConnection).then( () => { console.info("INFO FROM INDEX.HTML: Avatar started successfully.", "color: green; font-size: 14px;"); window.HybridWebView.InvokeDotNet('FinishInitializeAvatar'); // window.speak("Hello, this is a test message from your avatar.", "en"); } ).catch( (error) => { console.error("ERROR FROM INDEX.HTML: ERROR-IN-SCRIPT: Avatar failed to start. Error: " + error, "color: red; font-size: 16px;"); } ); } 最后。这是我所调用的代码以执行语音: window.speak = (textToSpeech, detectedLanguage) => { const audioElement = document.getElementById('audio'); if (audioElement) { audioElement.muted = false; } const videoElement = document.getElementById('video'); if (videoElement) { videoElement.muted = false; } window.audioElement.muted = false; window.remoteVideoDiv.muted = false; let myMap = new Map([["de", "de-DE"], ["en", "en-GB"], ["fr", "fr-FR"], ["es", "es-ES"], ["pl", "pl-PL"], ["pt", "pt-PT"], ["tr", "tr-TR"], ["nl", "nl-NL"]]); let language = myMap.get(detectedLanguage); let spokenText = textToSpeech; let spokenSsml = `<speak version='1.0' xmlns='http://www.w3.org/2001/10/synthesis' xmlns:mstts='http://www.w3.org/2001/mstts' xml:lang="en-US"> <voice name='en-US-JennyMultilingualNeural'> <lang xml:lang='${language}'> ${htmlEncode(spokenText)} </lang> </voice> </speak>`; return window.avatarSynthesizer.speakSsmlAsync(spokenSsml).then( (result) => { if (result.reason === SpeechSDK.ResultReason.SynthesizingAudioCompleted) { console.log("INFO FROM INDEX.HTML: Speech synthesized successfully with text " + spokenText, "color: green; font-size: 12px;"); return "success"; } return "failed"; }) .catch((error) => { console.log("ERROR FROM INDEX.HTML: ERROR-IN-SCRIPT: Failed to synthesize speech. Error: " + error, "color: red; font-size: 16px;"); //let jsonObject = JSON.stringify("failed"); //return jsonObject; return "failed"; }); } 这一切都很好。我可以看到化身。我看到化身正在说话(嘴唇在移动等)。 但是我听不到音频!我已经测试了像这样的Android权限: <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.READ_DEVICE_CONFIG" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> 我已经更换了耳机,更换了设备,尝试的Android模拟器以及真实的设备(Pixel 8)。 我尝试不同的是要取消这样的元素:const audioElement = document.getElementById('audio'); if (audioElement) { audioElement.muted = false; } const videoElement = document.getElementById('video'); if (videoElement) { videoElement.muted = false; } window.audioElement.muted = false; window.remoteVideoDiv.muted = false; 长时间尝试/错误并研究解决方案非常简单。该代码是100%正确的,但(至少在Android上)音频被阻塞。 它被阻止了,因为Hybridwevview本身没有用户交互,而仅在MAUI UI上进行交互。 如果我在HybridWebView上添加一个按钮,则如下: <button id="enableAudioButton">Enable Audio</button> 将此代码添加到我的JavaScript中 document.getElementById('enableAudioButton').addEventListener('click', () => { const audioElement = document.getElementById('audio'); if (audioElement) { audioElement.muted = false; audioElement.play().then(() => { console.log("enableAudioButton Audio is playing."); }).catch((error) => { console.error("enableAudioButton Error attempting to play audio:", error); }); } 并按按钮“启用音频”,音频起作用。 我现在尝试做的是自动单击按钮,这是下一个挑战。

回答 1 投票 0


如何在 PowerShell 7 中使用 Windows System.Speech 进行 TTS(或者是否有替代方案)

我在 WindowsPowerShell 和 PowerShell 中都有相同的 profile.ps1。 它包括调用 Windows 文本转语音的命令 但是,这些命令在 PowerShell 7 中运行时会失败。 发生错误...

回答 3 投票 0

HTML5 语音合成 API 语音/语言支持

我正在尝试使用 html5 中的语音合成来用阿拉伯语交谈消息,但是它不起作用。我运行以下脚本来检查 chrome 支持的语言,但阿拉伯语不是其中之一。

回答 2 投票 0

如何改变pyttsx3中的声音?

此代码可以正常工作,但我只能在 Microsoft Windows 中预安装的声音之间进行切换。这些声音是“Microsoft David Mobile”和“Microsoft Zira Mobile”。 后来我

回答 7 投票 0

如何从 GitHub 在我的 Node.js 项目中安装 dobling PDF 到文本转换库?

我正在尝试在 Node.js 项目中使用 docling 库将 PDF 转换为文本。但是,我遇到了一个问题,即该包在 NPM 注册表中不可用 npm 错误代码 E40...

回答 1 投票 0

Android TTS 无法在设备中工作

TextToSpeech 就像 http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/TextToSpeechActivity.html 在模拟器上工作正常,但在我的开发人员上不起作用......

回答 5 投票 0

Android 语音名称/代码的含义是什么?

我正在调用 Voice.getName() 方法,如下所示: 设置声音= tts.getVoices(); 字符串名称 = voice.getName(); 这将返回代码名称而不是友好的显示名称。我想要什么...

回答 2 投票 0

Android 11 上的文本转语音

API 29 的 tts 在 Android 上运行良好,可以说出任何文本 但在 API 30 上 tts 不再工作,我不知道为什么 谷歌文档说: “针对 Android 11 的应用...

回答 3 投票 0

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.