受到这个问题的启发(没有得到答案)。
上下文:我有一个 (swiftUI) 视图,它有 2 个按钮和一个文本字段。一键打开麦克风并使用 SFSpeechrecognizer 将语音转换为文本(并填充文本字段)。然后将其发送到我的服务器,我的应用程序会收到一个响应,该响应通过 AVSpeechSynthesizer 发出。麦克风始终处于打开状态,因为该应用程序应该是对话式的。因此,语音输出被麦克风捕获。
问题:我不想在说出响应时禁用麦克风,因为我通过麦克风控制我的应用程序。是否可以让麦克风(SFSpeechrecognizer)忽略 AVSpeechSynthesizer 所说的语音?Facetime 通过忽略设备播放的音乐来执行类似的操作。
我的语音转文本代码主要是修改了this。
文字转语音片段如下:
let utterance = AVSpeechUtterance(string: serverResponse)
utterance.voice = AVSpeechSynthesisVoice(language: "en-US")
utterance.rate = 0.1
let synthesizer = AVSpeechSynthesizer()
synthesizer.speak(utterance)
Run Code Online (Sandbox Code Playgroud) 我正试图在代码战中解决这个问题而且我完全难过了:
y = [-1, -1, 2, 8, -1, 4]
z = [1,3,5]
#to create [1,3,2,8,5,4]
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
我试着这样做:
for e in range(len(y)):
try:
if y[e] < 0:
y[e] = z[e]
except:
pass
Run Code Online (Sandbox Code Playgroud)
但这只有在负面与z中的内容相对应时才有效.
我有以下代码:
def isPP(n):
pos = [int(i) for i in range(n+1)]
pos = pos[2:] ##to ignore the trivial n** 1 == n case
y = []
for i in pos:
for it in pos:
if i** it == n:
y.append((i,it))
#return list((i,it))
#break
if len(y) <1:
return None
else:
return list(y[0])
Run Code Online (Sandbox Code Playgroud)
直到〜2000年才能完美运行,因为我在内存中存储的太多了.我该怎么做才能使它有效地用于大数(例如,50000或100000).在找到一个案例之后我试图让它结束,但是如果数字很大,我的算法仍然效率太低.
有小费吗?