通过语音为Bixby捕获街道地址

时间:2019-05-02 17:28:41

标签: bixby

我正在写一个Bixby胶囊,输入之一是街道地址。

我尝试过的一种方法是创建以下结构:

structure (FullAddress) {
  description (Address of a house)
  property (addressNumber) {
    type (geo.StreetNumber)
    min (Required)
    description (Address Number)
  }
  property (addressStreet) {
    type (geo.StreetName)
    min (Required)
    description (Street Name)
  }
  property (addressSuffix) {
    type (geo.StreetSuffix)
    min (Required)
    description (Street Name)
  }
}

通过构造函数将3个输入放在一起。

我已经看到,给定地址19 Fake Fields Street时,geo.StreetName类型的输入有时可以理解Fake Fields,有时甚至可以理解Fake并丢弃Fields。 / p>

Bixby的文本语音有时会听到app的值是haveave而不是geo.StreetSuffix,这会提示用户输入后缀。

有没有办法让Bixby更加准确地理解街道地址?

2 个答案:

答案 0 :(得分:1)

  1. 基本上,您需要更多的培训示例,其中包括2个或3个单词作为街道名称。尝试至少有3个示例,其中 xxx fakexxxfields street ,并在模拟器中测试发声 yyyyyyyyfields ,看看Bixby是否可以捕获 fields >作为地址名称的一部分。这里的目标是训练Bixby,以了解在 addressSuffix 之前可能有2个甚至3个单词。之后,您无需尝试在训练中使用 creek 即可确认发声,从而确定Bixby不仅学习了领域。请在this article中阅读更多内容。

  2. 语音识别没有简单的方法。您可以添加vocab model来强制将“ app”设置为“ ave”,但是如果用户确实要说出 app have 怎么办?我认为用户可以键入ave或blvd,但需要用 avenue 代替ave,用 boulevard 代替blvd。

答案 1 :(得分:0)

另一种替代方法是在训练中使用viv.geo.SearchTerm并在您的操作中使用viv.geo.NamedPoint。这样一来,用户可以说出“加利福尼亚加利福尼亚市场街1号”之类的不完整信息,而Bixby将使用HERE Maps搜索在旧金山找到它。

要使用,请设置NamedPoint概念(在导入viv.geo之后)

structure (InputAddress) {
  role-of (geo.NamedPoint)
}

然后在执行操作时,您可以执行以下操作:

    input (namedPoint) {
      type (InputAddress)
      min (Required) max (One)
      default-select {
        with-learning
        with-rule {
          select-first
        }
      }
    }

在此示例中,使用learning和select-first将自动选择第一个地址。没有这个,Bixby将自动建议地址。

然后

namedPoint将被传递到您的端点,您可以根据需要进行解析。

在培训中,使用geo.SearchTerm-例如:

[g:GetAddressAction] My address is {[g:InputAddress] (665 Clyde Ave Mountain View California)[v:geo.SearchTerm]}

或在提示时,您可以使用:

[g:GetAddressAction:continue:InputAddress] {[g:InputAddress] (60 S Market)[v:geo.SearchTerm]}

通过使用viv.geo.ResolveAddressByPlaceID目标让Bixby处理它,可以获得更完整的地址。这是使用NamedPoint和ResolveAddressByPlaceID的完整操作。注意注释中指向相关文档的链接

action (GetAddressAction) {
  type(Search)
  description (Get Address)
  collect {
    // See https://bixbydevelopers.com/dev/docs/dev-guide/developers/library.geo#using-searchterm - used in training
    // and https://bixbydevelopers.com/dev/docs/dev-guide/developers/library.geo#namedpoint - used below and for computed-input
    input (namedPoint) {
      type (InputAddress)
      min (Required) max (One)
      default-select {
        with-learning
        with-rule {
          select-first
        }
      }
      // hidden - Hide if all you need is address
    }
    computed-input (address){
      type (geo.Address)
      min (Optional) max (One)
      compute {
        intent {
          goal: viv.geo.ResolveAddressByPlaceID
          value: $expr(namedPoint.placeID)
        }
      }
    }
  }
  output (geo.Address)
}