【问题标题】:Capturing Street Address Through Voice for Bixby通过语音为 Bixby 捕获街道地址
【发布时间】:2019-05-10 03:10:31
【问题描述】:

我正在编写一个 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

此外,Bixby 的文本语音有时会听到 apphave 而不是 avegeo.StreetSuffix 值,这使得它会提示用户输入后缀。

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

【问题讨论】:

    标签: bixby


    【解决方案1】:
    1. 基本上,您需要更多的训练示例,其中包括 2 或 3 个单词作为街道名称。尝试至少有 3 个具有 xxx fakexxx fields street 的示例,并在模拟器中测试话语 yyy fakeyyy fields street 以查看 Bixby 是否可以捕获 fields 作为地址名称的一部分。这里的目标是训练 Bixby 了解 addressSuffix 前面可能有 2 个甚至 3 个单词。之后,您可以尝试表达 zzz fakezzz creek street,而无需在训练中使用 creek 来确认 Bixby 不只是学习了 fields。请在this article 阅读更多内容。

    2. 语音识别没有简单的方法。您可以包含vocab model 来强制“app”为“ave”,但如果用户真的想要说出apphave 一词怎么办?我认为用户可以输入 ave 或 blvd,但需要说 avenue 而不是 ave,以及 boulevard 而不是 blvd。

    【讨论】:

    • 这是一个很好的答案,谢谢!当用户说话时,他们会说 ave 而不是 avenue,否则会导致糟糕的用户体验。不幸的是,现在当有人说 ave Bixby 的语音到文本时无法区分 apphave 所以即使用户打算说其中一个词,当我期待一个地址时,我需要假设他们的意思是ave,因为其他两个词在上下文中没有多大意义。我创建了一个词汇文件来解决这个问题,它似乎正在工作。
    【解决方案2】:

    另一种选择是在训练中使用 viv.geo.SearchTerm,在您的操作中使用 viv.geo.NamedPoint。这会让用户说出诸如“1 Market Street, California”之类的不完整内容,Bixby 将使用 HERE 地图搜索在旧金山找到此内容。

    要使用,设置一个 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 的完整操作。注意 cmets 中相关文档的链接

    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)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多