0

是否可以用 php 找出短的起始标志<?是否足以在脚本中使用?

是否有一个 ini 变量或者我需要使用输出缓冲来编写一些函数来查看结果?


SpeechRecognitionEngine Spoken 和 Recorded 不匹配

SpeechRecognitionEngine用来识别用户所说的信息。该方法将在客户端的计算机上运行,​​它工作得很好,并且几乎可以像我想要的那样识别文本。所以我很高兴。

但是,我希望能够在我的服务器上对波形文件进行一些处理。现在我正在我的本地机器上进行测试,当我SetInputToWaveFile在识别器上使用该方法时,并将相同的音频剪辑传回(引擎最初记录的那个)它没有给出任何接近原始匹配(或替代)的东西.

例如:用户说话,识别器返回短语:“Hello how are you today”,有 10 个替代词。Wave文件被保存,然后通过使用SetInputToWaveFile(或SetInputToAudioStream)传入。识别器将返回一个与口语文本完全不同的短语(通常是一个单词),例如“Moon”和零替换。

通常,这样做时,识别器不会引发RecognizeCompleted事件。然而,它有时会引发SpeechHypothesized事件,有时会AudioSignalProblem发生。

不应该将从识别器结果中捕获的音频剪辑传递回相同的识别器,返回相同的匹配项?

原来的:

Private _recognizer As New SpeechRecognitionEngine(New CultureInfo("en-US"))

_recognizer.UnloadAllGrammars()
_recognizer.LoadGrammar(New DictationGrammar())
_recognizer.SetInputToDefaultAudioDevice()
_recognizer.InitialSilenceTimeout = TimeSpan.FromSeconds(2)
_recognizer.MaxAlternates = 10
_recognizer.BabbleTimeout = TimeSpan.FromSeconds(1)       
Dim result As RecognitionResult = _recognizer.Recognize()
Dim aud As RecognizedAudio = _result.Audio 'This is the audio that gets saved
aud.WriteToWaveStream("mypath")

(我已经删除了其中的一些逻辑代码,它们会提取结果并进行一些处理)

现在尝试从音频文件中提取:

_recognizer.SetInputToWaveFile("mypath")

'Doesn't work either
'_recognizer.SetInputToAudioStream(File.OpenRead("mypath"), New SpeechAudioFormatInfo(44100, AudioBitsPerSample.Sixteen, AudioChannel.Mono)) 

Dim result2 As RecognitionResult = _recognizer.Recognize()

result 和 result2 的识别/匹配甚至不接近。

4

3 回答 3

3

short_open_tag在 php.ini 中打开<?/关闭。但是,<?=...?> 始终适用于最新的 PHP 版本。

您可以使用 - 检索其值ini_get(),但不能使用 更改它ini_set。您可以使用包含的 .htaccess 来设置它php_flag short_open_tag on

所以你永远不应该使用<?PHP 块,但是<?php. <?=如果您不需要支持古老的 PHP 版本,则For 表达式很好。

于 2013-10-21T12:23:15.870 回答
1

是的,有一个 ini 变量,它被称为short_open_tags. 因此,如果服务器上存在短标签,则只需将ini_getwithsort_open_tags作为参数返回:true

ini_get('short_open_tag')
于 2013-10-21T12:23:59.203 回答
0

我现在做了一些仔细检查:

<?php
check_configuration(); // on a blank linux install check for some config flags
function check_configuration(){
    $test_short_open_tag=false;
    ?><? $test_short_open_tag=true; ?><?php
    if(!ini_get('short_open_tag') or !$test_short_open_tag){
       die( '<br>ERROR: please allow \'short_open_tag\' in php.ini or .htaccess to allow the use of "&lt;?"<br><br>'); 
    }
}
于 2013-10-21T12:55:39.900 回答