Я пытаюсь использовать Microsoft Speech Platform 11 через PHP-объект DOTNET
https://msdn.microsoft.com/en-us/library/jj127858.aspx
Платформа должна создаваться следующим образом
$platform = new DOTNET("assembly-name", "Microsoft.Speech.Recognition");
Но как получить имя сборки для Speech Platform 11? (заменить «имя-сборки» в вызове инициализации)
Я попробовал несколько названий сборок … догадки, очевидно, без удачи.
Ошибка инициализации
Failed to instantiate .Net object [CreateInstance] [0x80070002] The system cannot find the file specified
ОБНОВИТЬ
С помощью следующего кода я смог заставить PHP найти и использовать сборку
$full_assembly_string = 'Microsoft.Speech, Version=11.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35';
$full_class_name = 'Microsoft.Speech.Recognition.SpeechRecognitionEngine';
$interface = new DOTNET($full_assembly_string, $full_class_name);
Тем не менее, есть новый блокпост:
Failed to instantiate .Net object [Unwrapped, QI for IDispatch] [0x80004002] No such interface supported
На первый взгляд кажется, что это связано с видимостью COM. Но если по какой-либо причине класс не виден для COM (и это кажется странным), как это изменить? Это вообще возможно?
Не испытано. Просто еще одно предположение.
В соответствии с Microsoft Speech Platform SDK 11 Документов:
https://msdn.microsoft.com/en-us/library/microsoft.speech.recognition.speechrecognitionengine.aspx
я бы попробовал:
Microsoft.Speech
Microsoft.Speech.Recognition.SpeechRecognitionEngine
Microsoft.Speech.Recognition
это только пространство имен
$sre = new DOTNET(
'Microsoft.Speech',
'Microsoft.Speech.Recognition.SpeechRecognitionEngine'
);
Методы описаны здесь: https://msdn.microsoft.com/en-us/library/microsoft.speech.recognition.speechrecognitionengine_members(v=office.14).aspx#Anchor_2
Других решений пока нет …