How to tune an weighted voting ensemble method?
The question is a classical optimization problem.
To make it more simple, lets say that you have 2 models (m1 and m2). And you want to do an ensemble.
First idea, is doing the mean of both
(m1.predict(X) + m2.predict(X))/2

Then you want to optimize the best combination of both models.
for w in [0,0.25,0.5,0.75,1]:
     (w * m1.predict(X) + (1-w) * predict(X) ) / 2 
     print(evaluate results/MSE/Accuracy...)

Your problem is exactly the same as this one but using the voting classifier.
You just need to optimize the array. In a for loop.
weights=[5, 5, 10, 5, 6, 8, 4, 10]

In this case, your array is not normalized and it has more models. So it will take longer. Also voting classifier fits every time the model, so I will take you a long time. Is easier to code it yourself.