使用 OpenAI API 及以下是我的简单代码,但收到“steam_to_file”方法的弃用警告。
代码 -
from openai import OpenAI
from pathlib import Path
client = OpenAI(
api_key=os.getenv("OPENAI_API_KEY"),
)
speech_file_path = Path(__file__).parent / "speech.mp3"
response = client.audio.speech.create(
model="tts-1",
voice="alloy",
input= '''I see skies of blue and clouds of white
The bright blessed days, the dark sacred nights
And I think to myself
What a wonderful world
'''
)
response.stream_to_file(speech_file_path)
Run Code Online (Sandbox Code Playgroud)
IDE——Visual Studio 代码
警告如下 -
** DeprecationWarning:由于错误,此方法实际上并不传输响应内容,.with_streaming_response.method()应使用 response.stream_to_file("song.mp3")**
有人可以帮忙吗?
我尝试检查不同的论坛,但找不到与stream_to_file相关的错误。
我正在使用Python 3.12
我正在玩Android TTS引擎.我试图用西班牙语从墨西哥讲话,而不是从西班牙讲.
我已经尝试了几种语言代码/国家代码的组合,但我无法从西班牙获得任何西班牙语.这是我目前的代码
loc = new Locale("es", "MEX");
myTts.setLanguage(loc);
say("Hello");
Run Code Online (Sandbox Code Playgroud)
我也试过("es","US"),("es","LA"),("spa","US"),("spa","MEX"),我能想到的每一个组合它在日志中显示我:
TtsEngine :: setLanguage找到匹配语言(spa)但不匹配国家(MEX).
已成功加载es-ES
我可以退出我的应用程序并打开TTS服务扩展.如果我将语言设置为西班牙语[西班牙语]或西班牙语 - 拉丁语.无论哪种方式,当我点击'听预览'我得到"Hola"这是预期的.但是根据我的申请,我得到了"Heyyo"而不是"Hola".任何人都可以看到我错误地设置我的语言吗?
该负责人介绍文本到语音Android中说:"在创建活动中,良好的第一步是检查是否与相应的意图TTS资源的存在:"
Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);
Run Code Online (Sandbox Code Playgroud)
但是@gregm在这个帖子中暗示:
另外,不要使用ACTION_CHECK_TTS_DATA Intent,这很难使用.
相反,请执行以下操作:
- 创建TextToSpeech
- OnInit,检查isLanguageAvailable(),如果是,你的应用程序都已设置好.如果没有,发送ACTION_INSTALL_TTS_DATA
如果我理解正确,@ gregm做/建议的是将支票推迟到.TextToSpeech.LANG_MISSING_DATAonActivityResult()onInit()
为什么这比正式方法更好?
为什么ACTION_CHECK_TTS_DATA如此"难以使用"?
以下工作完美(Delphi 7):
procedure TMainForm.SayIt(s:string); // s is the string to be spoken
var
voice: OLEVariant;
begin
memo1.setfocus;
voice := CreateOLEObject ('SAPI.SpVoice');
voice.Voice := voice.GetVoices.Item(combobox1.ItemIndex); // current voice selected
voice.volume := tbVolume.position;
voice.rate := tbRate.position;
voice.Speak (s, SVSFDefault);
end;
Run Code Online (Sandbox Code Playgroud)
以上工作在"同步"模式(SVSFDefault标志),但如果我在尝试以异步模式播放声音时将标志更改为SVSFlagsAsync,则不会产生声音.没有给出错误消息,但扬声器上没有播放任何内容.
问题可能是什么?我在Delphi的Imports文件夹中有SpeechLib_TLB单元.
编辑:这是在Windows XP中
谢谢,布鲁诺.
我在我的应用程序中添加了语音合成.它工作但问题是我无法取消语音...例如,当我导航到另一个页面时,语音继续...所以,我调用CancelAll()方法取消当前语音但发生异常而且我不知道为什么.你知道这是什么问题吗?
例外
A first chance exception of type 'System.Threading.Tasks.TaskCanceledException' occurred in mscorlib.ni.dll
An exception of type 'System.Threading.Tasks.TaskCanceledException' occurred in mscorlib.ni.dll and wasn't handled before a managed/native boundary
An exception of type 'System.Threading.Tasks.TaskCanceledException' occurred in mscorlib.ni.dll and wasn't handled before a managed/native boundary
The program '[2576] TaskHost.exe' has exited with code -1 (0xffffffff).
Run Code Online (Sandbox Code Playgroud)
我的代码:
private SpeechSynthesizer synth = new SpeechSynthesizer();
protected override void OnBackKeyPress(CancelEventArgs e)
{
//I tried to cancel also here but it's the same exception...
}
//method called when …Run Code Online (Sandbox Code Playgroud) 我开发了一款基于TTS for Android 2.3的应用程序.我注意到在最新版本的Android(4.2.2)中,没有默认安装的默认TTS语言,您必须通过以下方式手动下载它们:设置 - >语言和输入 - >文本到语音输出 - > Google Text-To-speech - >安装语音数据
有没有办法自动安装语言?
我已经提取了两个话语的13个MFCC特征.第一个话语的特征集大小为11*13,其他为18*13.那么,如何比较两个特征集来找到这两个词之间的相似性呢?
如果有人知道,我没有使用任何分类器,标准工具遵循哪种算法来比较MFCC特征向量.请建议我,以便我可以实施它.
我想在我的TTS对象中设置荷兰语.以下是代码,
@Override
public void onInit(int status)
{
if ( status == TextToSpeech.SUCCESS )
{
int result = tts.setLanguage(Locale.getDefault());
System.out.println ( "Result : " + result + " " + Locale.getDefault().getLanguage() );
if (result == TextToSpeech.LANG_MISSING_DATA
|| result == TextToSpeech.LANG_NOT_SUPPORTED)
{
Toast.makeText( this , "Please Set your Language to English US.", Toast.LENGTH_LONG ).show();
}
else
{
tts.speak( "Hoe gaat het",TextToSpeech.QUEUE_FLUSH, null );
}
}
}
Run Code Online (Sandbox Code Playgroud)
以下行设置TTS中的语言
int result = tts.setLanguage(Locale.getDefault());
Run Code Online (Sandbox Code Playgroud)
Locale中的可用区域设置.
现在,如果我的手机语言是荷兰语,那么我可以将TTS的语言设置为荷兰语,但如果我的手机语言不是荷兰语(例如,如果它是英语),则没有选项将TTS的语言设置为荷兰语.
有人可以帮我在TTS中设置荷兰语吗?
我尝试过PyTTS(已弃用)和PyTTSx(最推荐)和两个Google TTS解决方案(gTTS和另一个名为Hung Truong的人),但没有一个在Python 3.4下工作.似乎他们还没有被移植到3.x.
我在这里搜索StackOverflow和Google,但所有提议的TTS解决方案都不能在Python 3下运行.我在Windows 7上.
我正在尝试让iOS文本语音合成器“说”短语列表,这些短语之间存在可变的延迟。例如,我可能要说“你好”,然后等待5秒钟,然后“有人在吗?”,然后等待10秒钟,然后说“你好?” ...等等。
我在下面做了一个简单的例子,说明了我要做什么。我知道语音合成器正在讲话,其他语音被添加到队列中并按照接收顺序进行讲话。
我尝试了许多方法来实现循环中的此延迟。使用打印语句测试延迟可以确认它们是否有效,但是它们似乎干扰了text-speach-function功能,该功能说的是第一个短语,但要等到for循环完成后再说其余的内容。我认为这些类型的任何延迟都可以工作,因为我假设语音合成器是事件驱动的。
我希望能提供一些帮助,或者至少能对它为什么无法工作有所了解。谢谢!
这是示例代码:iPhone 6模拟器,Xcode 7.3
import UIKit
import AVFoundation
class ViewController: UIViewController {
let speechSynthesizer = AVSpeechSynthesizer()
var phraseArray: [String] = ["One", "Two", "Three", "Four", "Five", "Six", "Seven"]
override func viewDidLoad() {
super.viewDidLoad()
for phrase in phraseArray{
let speechUtterance = AVSpeechUtterance(string: phrase)
speechSynthesizer.speakUtterance(speechUtterance)
//"delay()" goes here. It needs to be a variable length delay.
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的一些延迟方法:
将类设置为语音合成器的委托,并运行while循环,直到合成器完成。
基于时间的延迟: referenceDate = NSDate() while(NSDate().timeIntervalSinceDate(referenceDate) < 0.5) {}
我已经尝试过从堆栈中“延迟”解决方案,就像这样: 循环中的快速延迟
func delay(delay:Double, closure:()->()) {
dispatch_after(
dispatch_time(
DISPATCH_TIME_NOW,
Int64(delay …
text-to-speech ×10
android ×4
python-3.x ×2
c# ×1
delay ×1
delphi ×1
delphi-7 ×1
ios ×1
mfcc ×1
openai-api ×1
python ×1
sapi ×1
swift ×1