In this environment, your organization is the customer and the other organizations are the development organizations. Your organization should be providing Product Owners to the Scrum teams that are doing the development.
Personally, I don't understand the need for a Scrum Master in your organization. Each of the developing organizations should be executing their own processes. If they are following Scrum or a related method, the Scrum Masters or coaches at those organizations should be helping the Product Owners (provided by your organization) with understanding their development processes and providing them with the information needed to build the product in a timely manner.
However, I can see one use for a Scrum Master in your organization. You should be working with the remote Scrum Masters and coaches to understand each of their processes and provide on-site support to the Product Owners. You can also ensure that the Product Owners understand the basic principles of Scrum and agile software development. However, you shouldn't be dictating processes to the development teams.
To answer your specific questions:
Who is responsible for writing acceptance criteria in this case?
In this environment, your Product Owners should be writing acceptance criteria, in collaboration with the external teams they support. The external Scrum Masters or coaches should be helping them to understand how write acceptance criteria that are suitable for the development teams.
Are we (as PO, internal Scrum Master, and client at the same time) allowed to measure development teams velocity?
No. The independent development teams should be managing their own processes. That includes defining how they estimate. You should only be looking at their output. If you have concerns about quality or rate of delivery, your organization through the Product Owner should be discussing this with the Scrum Master and Development Team at the external vendors.