使用 Piper TTS 库在 python 程序中限制 Linux 上的 CPU 核心使用

问题描述 投票:0回答:1

出于某种原因,当我使用 PiperTTS 使用

taskset -c 2,3 python myprogram.py
生成语音时,系统不会限制对我指定的核心进行处理。

当我使用另一个库时,例如

llama-cpp-python
taskset
能够限制核心执行。我还尝试使用
psutil
python 库来设置 CPU 亲和力,但这也不起作用。

  • Python 程序如何或为何能够绕过任务集设置的限制?
  • 为什么 Piper TTS 库不使用任务集设置的核心?
python linux task
1个回答
0
投票

PiperTTS 利用 OnnxRuntime,它在内部管理自己的线程

尝试将

-a
标志与任务集一起使用(例如
taskset -ac 2,3 ...
)或按如下方式配置 OnnxRuntime:

import onnxruntime as ort

sess_opt = ort.SessionOptions()
sess_opt.intra_op_num_threads = 3
sess_opt.add_session_config_entry('session.intra_op_thread_affinities', '1;2')

sess = ort.InferenceSession('model.onnx', sess_opt, ...)


# initialize Piper
# see https://github.com/rhasspy/piper/blob/c0670df63daf07070c9be36b5c4bed270ad72383/src/python_run/piper/voice.py#L25

from piper import PiperVoice
from piper.config import PiperConfig

voice = PiperVoice(
    config=PiperConfig.from_dict({...}),
    session=sess
)

© www.soinside.com 2019 - 2024. All rights reserved.